⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 segprocnew.m

📁 基于图像特征的模板匹配算法的研究
💻 M
字号:

% function cellarea=preprocessing(image,mheig,mwid,cof)
% image=wwx([1000,2000,1000,2000]);
tic
mheig=200;mwid=200;

% mapc=imread('16_125.jpg'); % 10_125,22_107,25_54,23_38,23_107,21_125,20_58,22-125
% mapg=rgb2gray(mapc);
mapg=imread('16_125.jpg');
image=255-double(mapg);
image=image(1:810,:);


if ~isa(image,'uint8')
    image=uint8(image);
end
m=size(image,1);
n=size(image,2);

cof=histcofnew(image);
bwimage=im2bw(image,cof);


% seh=strel('line',200,0);
% sev=strel('line',200,90);

seh1=strel('line',27,0);
sev1=strel('line',27,90);
sse=strel('square',31);



flag=repmat(logical(uint8(0)),m,n);
for i=1:m
    aa=bwimage(i,1:n-1);
    bb=bwimage(i,2:n);
    ss=xor(aa,bb);
    idxone=find(ss==1);
    if isempty(idxone)
        flag(i,:)=1;
    else 
        long=length(idxone);
        if idxone(1)>=200 % & aa(idxone(1))==0
            flag(i,1:idxone(1))=1;
        end
        if n-idxone(long)>=200 %& aa(idxone(long)+1)==0
            flag(i,idxone(long)+1:n)=1;
        end
        if long>1
            for kk=1:length(idxone)-1
                if idxone(kk+1)-idxone(kk)>=200 %& aa(idxone(kk)+1)==0
                    flag(i,idxone(kk)+1:idxone(kk+1))=1;
                end
            end
        end
    end
end
    

for i=1:n
    aa=bwimage(1:m-1,i);
    bb=bwimage(2:m,i);
    ss=xor(aa,bb);
    idxone=find(ss==1);
    if isempty(idxone)
        flag(:,i)=1;
    else 
        long=length(idxone);
        if idxone(1)>=200 % & aa(idxone(1))==0
            flag(1:idxone(1),i)=1;
        end
        if m-idxone(long)>=200 %& aa(idxone(long)+1)==0
            flag(idxone(long)+1:m,i)=1;
        end
        if long>1
            for kk=1:length(idxone)-1
                if idxone(kk+1)-idxone(kk)>=200 %& aa(idxone(kk)+1)==0
                    flag(idxone(kk)+1:idxone(kk+1),i)=1;
                end
            end
        end
    end
end
    

% flagd=imerode(~flag,sev1);
% flage=imdilate(flagd,sev1);
% flagh=~flage;
% 
% flagd=imerode(~flagh,seh1);
% flage=imdilate(flagd,seh1);
% flagv=~flage;


poute=imerode(~flag,sse);
poutd=imdilate(poute,sse);

rse=strel('square',37);
oout=imdilate(poutd,rse);
ll=bwlabel(oout);
nn=max(max(ll));
pstat=imfeature(ll,'boundingbox');
oarea=[];playarea=[];
for ii=1:size(pstat,1);
   mmid=pstat(ii).BoundingBox;
   playarea=[playarea;round(mmid(1)),round(mmid(2)),mmid(3),mmid(4)];
   if (mmid(3)>mwid & mmid(4)>mheig) |(mmid(3)>mheig & mmid(4)>mwid)
       oarea=[oarea; round(mmid(1)),round(mmid(2)),mmid(3),mmid(4)];
   end
end
bwout=zeros(m,n);playout=bwout;
for ii=1:size(oarea,1);
    bwout(oarea(ii,2):oarea(ii,2)+oarea(ii,4)-1,oarea(ii,1):oarea(ii,1)+oarea(ii,3)-1)=1;
end
for ii=1:size(playarea,1);
    playout(playarea(ii,2):playarea(ii,2)+playarea(ii,4)-1,playarea(ii,1):playarea(ii,1)+playarea(ii,3)-1)=1;
end
immo=bwout.*double(image);
imout=~bwout.*255;
pout=imout+immo;

toc

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -