《visual c++matlab图像处理与识别实用案例精选》源码

源代码在线查看: p0702.m

软件大小: 1714 K
上传用户: jipigu
关键词: visual matlab nbsp 图像处理
下载地址: 免注册下载 普通下载 VIP

相关代码

				I=imread('cancer02.bmp');       % 注意必须保证二值图像中,细胞区域为白色区域或者像素点值为“1”
				[x,y]=size(I);
				
				BW = bwperim(I,8);              % 检测细胞的边缘跟踪,用于计算周长 
				
				%检测垂直方向连读的周长像素点%
				P1=0;
				P2=0;
				Ny=0;                           % 记录垂直方向连续周长像素点的个数
				for i=1:x
				    for j=1:y
				        if (BW(i,j)>0)
				            P2=j;
				            if ((P2-P1)==1)    % 判断是否为垂直方向连续的周长像素点
				                Ny=Ny+1;
				            end
				            P1=P2;
				        end
				    end
				end    
				
				%检测水平方向连读的周长像素点%
				P1=0;
				P2=0;
				Nx=0;                           % 记录水平方向连续周长像素点的个数
				for j=1:y
				    for i=1:x
				        if (BW(i,j)>0)
				            P2=i;
				            if ((P2-P1)==1)    % 判断是否为水平方向连续的周长像素点
				                Nx=Nx+1;
				            end
				            P1=P2;
				        end
				    end
				end 
				
				
				SN=sum(sum(BW));            % 计算周长像素点的总数
				Nd=SN-Nx-Ny;                % 计算奇数码的链码数目
				
				H=max(sum(I));              % 计算细胞的高度 
				W=max(sum(I'));             % 图象I经矩阵转置后,计算宽度
				L=sqrt(2)*Nd+Nx+Ny;         % 计算周长
				
				%====四个形态特征值计算===%
				A=bwarea(I);                % 计算细胞的面积
				C=4*pi*A/(L*L);             % 计算圆度
				R=A/(H*W);                  % 计算矩形度
				E=min(H,W)/max(H,W);        % 计算伸长度
				
				%==设定相关阈值,识别癌细胞==%
				Ath1=10000; Ath2=50000;
				Cth=0.5;      Rth=0.5;   Eth=0.8;
				
				
				if ((A>=Ath1)&&(A				    if ((C>=Cth)&&(REth))
				        Cancer_Right=1                     % 结论为癌细胞
				    end    
				else if (A>=Ath2)
				        Cancer_Right=2                     % 结论为可疑小细胞癌细胞      
				else
				    Cancer_Right=0                         % 结论为正常细胞 
				end
				end
				
				figure(1);
				imshow(I);
				figure(2);
				imshow(BW);			

相关资源