癌細胞形態學分析

2021-07-25 12:02:10 字數 1935 閱讀 9075

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 ...