實驗一、直方圖學習、了解灰度直方圖及灰度直方圖均衡化的定義,作用、使用方法
1、灰度直方圖是灰度級的函數,描述圖像中該灰度級的像素個數(或該灰度級像素出現的頻率):其橫坐標是灰度級,縱坐標表示圖像中該灰度級出現的個數(頻率)。
一維直方圖的結構表示為
2、直方圖均衡化是圖像處理領域中利用圖像直方圖對對比度進行調整的方法。這種方法通常用來增加許多圖像的局部對比度,尤其是當圖像的有用數據的對比度相當接近的時候。通過這種方法,亮度可以更好地在直方圖上分布。這樣就可以用于增強局部的對比度而不影響整體的對比度,直方圖均衡化通過有效地擴展常用的亮度來實現這種功能。
1、直方圖的生成:
- 讀取圖片
- 將圖片轉成灰度圖片
- 調用圖像顯示函數imshow,顯示原圖的灰度圖像:
- 調用灰度直方圖生成函數imhist,生成指定圖片對應的灰度直方圖:
具體實驗代碼如下:
i= imread ('110408414.JPG'); %讀入像
img=rgb2gray(i);%將圖片轉成灰度圖片
subplot(1,2,1),imshow(img);title(' 圖一 原圖像對應的灰度圖像')
subplot(1,2,2),imhist(img);title(' 圖二 原圖像的灰度直方圖')
2、直方圖均衡化
調用函數 histeq 即可完成直方圖均衡化;
具體代碼:
j=histeq(img);
subplot(2,2,1),imshow(img);title(' 圖一 原圖像對應的灰度圖像')
subplot(2,2,2),imhist(img);title(' 圖二 均衡化以后的圖像')
subplot(2,2,3),imshow(j);title(' 圖三 原圖像對應的直方圖')
subplot(2,2,4),imhist(j);title(' 圖四 均衡化以后的直方圖')
四、實驗分析略
實驗二、邊緣檢測圖像最重要的特征之一就是邊緣,它圖像分割的主要依據。本次試驗學習和了解邊緣的基本特征、經典邊緣檢測算子(包括Prewitt算子,Roberts算子, LoG算子, Canny算子)
1、Prewitt算子是一種一階微分算子的邊緣檢測,利用像素點上下、左右鄰點的灰度差,在邊緣處達到極值檢測邊緣,去掉部分偽邊緣,對噪聲具有平滑作用 。其原理是在圖像空間利用兩個方向模板與圖像進行鄰域卷積來完成的,這兩個方向模板一個檢測水平邊緣,一個檢測垂直邊緣。
2、Roberts算子是一種最簡單的算子,是一種利用局部差分算子尋找邊緣的算子,他采用對角線方向相鄰兩象素之差近似梯度幅值檢測邊緣。檢測垂直邊緣的效果好于斜向邊緣,定位精度高。
3、LoG算子一種利用圖像強度二階導數的零交叉點來求邊緣點的算法
4、Canny 算法使用 4 個 mask 檢測水平、垂直以及對角線方向的邊緣。原始圖像與每個 mask 所作的卷積都存儲起來。對于每個點都標識在這個點上的最大值以及生成的邊緣的方向。這樣就從可以原始圖像生成了圖像中每個點亮度梯度圖以及亮度梯度的方向。較高的亮度梯度比較有可能是邊緣,但是沒有一個確切的值來限定多大的亮度梯度是邊緣多大又不是,所以 Canny 使用了滯后閾值。
1、試驗程序:
I=imread('110408414.JPG');
f=rgb2gray(I); %將彩色圖像轉為灰度圖像
f=im2double(f); %轉換為雙精度,以便后面的計算
figure,imshow(I),title('O rigimal Image');
PF=edge(f,'prewitt'); %邊緣檢測, Prewitt算子
figure,imshow(PF),title('PF');
RF=edge(f,'roberts');%邊緣檢測,Roberts算子
figure,imshow(RF),title('R F');
LF=edge(f,'log');%邊緣檢測,算子
figure,imshow(LF),title('L F');
CF=edge(f,'canny');%邊緣檢測,Canny算子
figure,imshow(CF),title('C F');

2、試驗結果:
略
實驗三、K-means聚類了解和學習K-means算法及其應用--K-means聚類
K-means算法是硬聚類算法,是典型的基于原型的目標函數聚類方法的代表,它是數據點到原型的某種距離作為優化的目標函數,利用函數求極值的方法得到迭代運算的調整規則。K-means算法以歐式距離作為相似度測度,它是求對應某一初始聚類中心向量V最優分類,使得評價指標J最小。算法采用誤差平方和準則函數作為聚類準則函數。
RGB= imread ('1.JPG'); %讀入像
img=rgb2gray(RGB);
[m,n]=size(img);
subplot(2,2,1),imshow(img);title(' 圖一 原圖像')
subplot(2,2,2),imhist(img);title(' 圖二 原圖像的灰度直方圖')
hold off;
img=double(img);
for i=1:200
c1(1)=25;
c2(1)=125;
c3(1)=200; %選擇三個初始聚類中心
r=abs(img-c1(i));
g=abs(img-c2(i));
b=abs(img-c3(i)); %計算各像素灰度與聚類中心的距離
r_g=r-g;
g_b=g-b;
r_b=r-b;
n_r=find(r_g<=0&r_b<=0);%尋找最小的聚類中心
n_g=find(r_g>0&g_b<=0);%尋找中間的一個聚類中心
n_b=find(g_b>0&r_b>0);%尋找最大的聚類中心
i=i+1;
c1(i)=sum(img(n_r))/length(n_r);%將所有低灰度求和取平均,作為下一個低灰度中心
c2(i)=sum(img(n_g))/length(n_g);%將所有低灰度求和取平均,作為下一個中間灰度中心
c3(i)=sum(img(n_b))/length(n_b);%將所有低灰度求和取平均,作為下一個高灰度中心
d1(i)=abs(c1(i)-c1(i-1));
d2(i)=abs(c2(i)-c2(i-1));
d3(i)=abs(c3(i)-c3(i-1));
if d1(i)<=0.001&&d2(i)<=0.001&&d3(i)<=0.001
R=c1(i);
G=c2(i);
B=c3(i);
k=i;
break;
end
end
R
G
B
img=uint8(img);
img(find(img<R))=0;
img(find(img>R&img<G))=128;
img(find(img>G))=255;
%toc
subplot(2,2,3),imshow(img);title(' 圖三 聚類后的圖像')
subplot(2,2,4),imhist(img);title(' 圖四 聚類后的圖像直方圖')
2、實驗結果
實驗四、綜合實驗—虹膜檢測了解虹膜識別的基本思想與方法
虹膜是一種在眼睛中瞳孔內的織物狀的各色環狀物,每一個虹膜都包含一個獨一無二的基于像冠、水晶體、細絲、斑點、結構、凹點、射線、皺紋和條紋等特征的結構。虹膜不同于視網膜,視網膜位于眼底,難以取像,虹膜可以直接看到,可以用攝像設備獲取精細的圖像虹膜的生物特征識別技術基于以下依據:虹膜的纖維組織細節復雜而豐富,并且虹膜組織細節的形成與胚胎發生階段的環境有關,具有極大的隨機性。虹膜組織具有因人而異的固有特征,即使是同卵雙胞胎,也不存在特征相同的實際可能性。
當虹膜發育完全后,他在人的一生中的變化及其微小。在虹膜的外部,有一層透明的角膜將它與外界隔開。因此成熟的虹膜不易受到外界的傷害而發生變化。虹膜所具有的這些特點和優點,使虹膜圖像獲取時,人眼不與CCD,CMOS等光線傳感器直接接觸,采用的是一種非侵犯的采集技術。
基于虹膜特征識別的系統過程
1、實驗主程序:
b=imread('iris.bmp'); %讀取相片
x=rgb2gray(b); %轉為灰度圖像
imshow(x);
a=pupil_detect(x,2); %調用虹膜檢測子函數
figure(1);imshow(x,[]);hold on;
drawellipse(a,'y.'); %圈出虹膜的邊緣
% unwrap the iris image
pr=(a(3)+a(4))/2;pc=[a(2) a(1)];
R=pr*3;
y=iris_unwrapping(x, pr, pc, R);
figure(2);subplot(1,2,1);imshow(x,[]);
subplot(1,2,2);imshow(y,[]);
圖一、示例樣張
圖二、驗證1

圖三、驗證2圖四、驗證3略
實驗五圖像處理的基本算法
一、實驗目的
1.學習位圖文件的基本結構;
2.學習圖像可視化編程。
3.理解圖像傅立葉變換的原理,掌握圖像處理的基本操作,及其在頻域的處理過程和技巧。在此基礎上,自行完成基礎部分的課后作業。
二、實驗環境
計算機及部分應用程序框架和代碼。
三、實驗要求
1.在demo程序下,實現laplace算子、Roberts算子、Sobel算子、Kirch算子等邊界檢測算子中的任何兩個;
2.在已有快速傅立葉變換代碼基礎上,通過觀察,了解圖像傅立葉變換的旋轉、平移等特性;
3.對給定圖像實現頻域的平滑去噪。
四、實驗步驟
1. 在已有函數中加入邊緣檢測算子,觀察圖像處理前后的變化;
2.自己嘗試加入新的菜單并映射函數,實現新的邊緣檢測算子;
3. 在已有快速傅立葉變換函數基礎上,修改變換后的頻譜數據,實現圖像的頻域平滑去噪;
4.對頻譜數據進行處理,嘗試實現理想低通、正弦波載入等操作。
五、思考題
1.觀察laplace、Roberts、Sobel、Kirch等算子對邊界檢測的特點;
2.如何實現彩色圖像的邊緣檢測?
3.傅里葉變換有哪些重要的性質,討論圖像的邊緣與頻率的關系?
4.當圖像不滿足N*N時,如何對圖像補0,實現其快速傅立葉變換?
六、提交作業的形式
程序演示,現場接受助教或教師的提問
實驗六細胞圖像的分割與測量
一、實驗目的
1.學習圖像中心“圖像處理典型算法演示系統”應用程序框架,掌握基于類的圖像編程技術;
2.分析細胞圖像特點,在典型算法應用程序框架上完成細胞圖像的分割和測量,并分析測量結果。
3.將圖像預處理、分割、分析等關鍵技術結合起來,理論與實踐相結合,提高圖像處理關鍵技術的綜合應用能力。
二、實驗環境
計算機、“圖像處理典型算法演示系統”應用程序框架及部分集成代碼。
三、實驗要求
1.對比中值、均值和形態學開閉運算對細胞圖像的濾波效果,選擇適用于細胞圖像的濾波方法;
2.運用大津閾值對細胞圖像分割,觀察分割后噪聲情況,觀察目標邊緣處的分割效果;
3.在給定應用程序框架下通過區域生長法實現對連通區域的編號;
4.能夠對掩模部分限定的圖像數據進行處理;
四、實驗步驟

五、思考題
1.若將預處理去噪的步驟省掉,則如何在目標編號的過程中加入濾波處理;
2.將去噪過程與閾值分割前后調換,選擇哪種濾波方法可以濾除二值圖像上的噪聲;
3. 如果正常細胞的核仁與細胞核面積比范圍在0.1-0.3之間,則如何濾掉不正常的細胞;
4.總結大津閾值在細胞圖像分割中存在的問題,想一想你所學的算法中哪種算法更適合于細胞圖像的分割。
六、提交作業的形式
程序演示,現場接受助教或教師的提問。