?? p0702.m
字號:
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<Ath2))
if ((C>=Cth)&&(R<=Rth)&&(E>Eth))
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);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -