clc;
clear;
i=imread('cancer02.bmp'); % 注意必須保證二值影象中,細胞區域為白色區域或者畫素點值為「1」
[x,y]=size(i);
bw = bwperim(i,8); % 檢測細胞的邊緣跟蹤,用於計算周長
figure(3);
imshow(bw);
%檢測垂直方向連讀的周長畫素點%
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;
endp1=p2;
endend
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;
endp1=p2;
endend
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=cth)&&(r<=rth)&&(e>eth))
cancer_right=1 % 結論為癌細胞
end
else if (a>=ath2)
cancer_right=2 % 結論為可疑小細胞癌細胞
else
cancer_right=0 % 結論為正常細胞
endend
figure(1);
imshow(i);
figure(2);
imshow(bw);
執行結果:
形態學重建
在形態學梯度影象的基礎上,利用形態學的開閉重建運算對梯度影象進行重建,在保留重要區域倫敦的同時去除細節和雜訊。分水嶺變換存在過分割現象,原因在於檢測的區域性極值過多,造成極值過多的原因在於影象中的非規則灰度擾動和雜訊。對於好的分水嶺影象分割方法,不僅能消除過分割現象,而且應保證分割後的區域倫敦邊緣具...
形態學點滴
令a為z中的集合,如果a a1,a2 是a中的元素,則 a a 如果a不是a中的元素,則 a a matlab函式 ismember a,a 似乎還有個函式in與此類似 另外 判斷集合中的元素是否按公升序排列 issorted a 想想issorted a end 1 1 是什麼意思?刪除集合中的重...
形態學濾波
include pch.h include include include include using namespace std using namespace cv 形態學 mat g srcimage,g dstimage int g nelementshape morph rect int ...