遗传算法matlab_【图像处理】基于遗传算法的图像边缘检测

function gakmeansclc;close all; clear all;% sds  - sampled dataset  global sds;[im,map]=imread('ant.jpg');if ( size(im,3)==3) im=rgb2gray(im);endim=im2double(im);[row,col]=size(im);nc=5;L= row*col;rns=(10/100)*L; rp=randperm(L);sds=im(rp(1:rns));options=gaoptimset('PopulationSize',20,'PopulationType','doubleVector', ...                    'CrossoverFraction',0.7, 'Generations',100,'EliteCount',2, ...                   'SelectionFcn', @selectionroulette,'CrossoverFcn',@crossoverarithmetic,...                   'MutationFcn',@mutationadaptfeasible,'PlotFcns',@gaplotbestf) ;               % lower bound limit               lb=zeros(nc,1);% upper bound limitub=ones(nc,1);[gics,gfv,exf] =ga(@objfunc,nc,[],[],[],[],lb,ub,[],options);[idx,cs,egr]=kmeanseg(im,gics);gsim=coloring(cs,idx);gsim=reshape(gsim,row,col,3);figure;imshow(gsim);title('GA-Kmeans');function egr=objfunc(cs)global sds  nc = size(cs,2);  [row,col]=size(sds);  D=zeros(row,col,nc);  % Euclidean distance between centroids and image's pixel   for c=1: nc     D(:,:,c)=   (sds - cs(c)).^2 ;       end         % assign members (image pixels) to clusters   [mv,~]=min(D,[],3);   egr=sum(mv(:));  function gsim=coloring(cs,idx)nc = length(cs);[~,ind]=sort(cs);gidx=zeros(size(idx));for s=1: nc gidx(idx==ind(s)) =s;   endcolors = hsv(nc);gsim= colors(gidx,:); function [idx,cs,egr]=kmeanseg(im,cs)%number of IterationT= 50; t=0; nc=length(cs);[row,col]=size(im);D=zeros(row,col,nc);pcs=cs;egr =[];eps=1.e-8; cmx=1;while ( teps )                        % Euclidean distance between centroids and image's pixel     for c=1: nc       D(:,:,c)=   (im - cs(c)).^2 ;         end                % assign members (image pixels) to clusters      [mv,idx]=min(D,[],3);         % cluster centroid updation    for c=1: nc       I = (idx==c);        cs(c) = mean( mean(im(I)) );        end        % find if any member label changes between current and previous iteration          cmx = max( abs(cs-pcs) );     pcs = cs;              t= t+1;         %sum difference between centroid and their members     % and store it for ploting energy minimization functions    egr= [egr; sum(mv(:)) ];                         end         

6c4790029ec3c760a799c6dee6086389.png

往期回顾>>>>>>

【模式识别】Matlab指纹识别【优化求解】A*算法解决三维路径规划问题  matlab自动识别银行卡号【优化问题】基于栅格地图——遗传算法的机器人最优路径规划【优化求解】模拟退火遗传实现带时间窗的车辆路径规划问题【数学建模】Matlab实现SEIR模型

fbded79fffe2bdad43b6712365ce21db.png

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值