?? p0703.m
字號:
I=imread('badcell.bmp');
[y,x,z]=size(I);
myI=double(I); % 圖象的數據類型為無符號整型,必須轉換為雙精度實型才能計算
%%%%%%%%%%% RGB to HSI %%%%%%%%
H=zeros(y,x);
S=H;
HS_I=H;
for i=1:x
for j=1:y
HS_I(j,i)=((myI(j,i,1)+myI(j,i,2)+myI(j,i,3))/3);
S(j,i)=1-3*min(myI(j,i,:))/(myI(j,i,1)+myI(j,i,2)+myI(j,i,3));
if ((myI(j,i,1)==myI(j,i,2))&(myI(j,i,2)==myI(j,i,3))) % 三者相等,H計算式中分母為零,無法計算
Hdegree=0;
else
Hdegree=acos(0.5*(2*myI(j,i,1)-myI(j,i,2)-myI(j,i,3))/((myI(j,i,1)-myI(j,i,2))^2+(myI(j,i,1)-myI(j,i,3))*(myI(j,i,2)-myI(j,i,3)))^0.5);
end
if (myI(j,i,2)>=myI(j,i,3))
H(j,i)=Hdegree; % G≥B, H 在[0,π]范圍內
else
H(j,i)=(2*pi-Hdegree); % G < B, H 在(π,2π]范圍內
end
end
end
%=====色度識別====% % 色度識別需要依靠專家知識,此處僅舉一例說明
Hth1=0.8*2*pi; Hth2=0.7*2*pi; % 檢測紫紅色,紅色的色度值在[1.4pi,1.6pi ]
NPurple=0; % 記錄紫紅色或接近紅色的像素點個數
for i=1:x
for j=1:y
if ((H(j,i)>=Hth1)|(H(j,i)<=Hth2))
NPurple=NPurple+1;
end
end
end
Ratio=NPurple/(x*y); % 紫紅色像素點所占比例
%disp(Ratio);
if (Ratio<=0.3) % 判別是否為紫紅色
fprintf('為正常細胞');
else
fprintf('為病變細胞');
end
%若細胞為紫紅色,則是正常,若細胞顏色偏淡幾乎為透明,則為病變細胞
%disp(Purple);
HS_I=uint8(HS_I); % 實型轉換為整型才能作為圖象顯示
figure(1);
imshow(I);
figure(2);
imshow(HS_I);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -