一.實驗目的
1.掌握灰度直方圖的概念及其計算方法;
2.熟練掌握直方圖均衡化計算過程;了解直方圖規定化的計算過程;
3.了解色彩直方圖的概念和計算方法
二.實驗內容:
1 讀取數字圖像,顯示直方圖(例如使用imhist,有余力可嘗試bar,stem等函數),并進行直方圖均衡化處理;
2 顯示經過均衡化處理過的圖像直方圖。
3 有余力可探索更多關于直方圖的圖像處理操作(例如直方圖規定化、局部直方圖規定化等)。
4 記錄和整理實驗報告。
三.實驗程序、實驗結果與實驗分析:
1.實驗程序
(1)讀取數字圖像,顯示直方圖,并進行直方圖均衡化處理(Test4_1)
I=imread('pollen.jpg');??J=histeq(I);%對原圖像進行直方圖均衡化處理figure;subplot(1,2,1) ;imshow(I);title('原圖像');?????????subplot(1,2,2) ;imshow(J);?title('直方圖均衡化后的圖像') ;???figure; subplot(1,2,1) ;imhist(I,64);??? %將原圖像直方圖顯示為64級灰度title('原圖像直方圖') ;???????subplot(1,2,2);?????????????imhist(J,64) ;??? %將均衡化后圖像的直方圖顯示為64級灰度title('均衡變換后的直方圖') ;?
(2)讀取數字圖像,顯示直方圖,并進行直方圖規定化處理(Test4_2)
I=imread('mars.jpg');% 顯示原始圖像和其直方圖figure;subplot(1, 2, 1);imshow(I);title('火星天體福布斯的圖像');subplot(1, 2, 2);imhist(I, 64);title('原圖像直方圖');m1 = 0.15; sig1 = 0.05;? m2 = 0.75; sig2 = 0.05;?A1 = 1; A2 = 0.07;? k = 0.002;?p = twomodegauss(m1, sig1, m2, sig2, A1, A2, k);% 對圖像進行直方圖規定化處理J = histeq(I, p);% 顯示規定化處理后的圖像和其直方圖figure;subplot(1, 2, 1);imshow(J);title('直方圖規定化后的圖像');subplot(1, 2, 2);imhist(J, 64);title('規定化處理后的直方圖');
(3)讀取數字圖像,顯示直方圖,并進行局部直方圖規定化處理(Test4_3)
f=imread('mars.jpg');figure;?subplot(2, 2, 1);?imshow(f);?title('原始圖像');?g1=adapthisteq(f);subplot(2, 2, 2);?imshow(g1);?title('用默認值使用adpthisteq函數的結果');?g2=adapthisteq(f,'NumTiles',[25,25]);subplot(2, 2, 3);?imshow(g2);?title('將參數NumTiles設置為[25,25]時函數的結果');?g3=adapthisteq(f,"NumTiles",[25,25],"ClipLimit",0.05);subplot(2, 2, 4);?imshow(g3);?title('使用這個小片數量,并且ClipLimit=0.05時得到的結果');
2.實驗結果
(1)讀取數字圖像,顯示直方圖,并進行直方圖均衡化處理
(2)讀取數字圖像,顯示直方圖,并進行直方圖規定化處理
直方圖規定化后的圖像
(3)讀取數字圖像,顯示直方圖,并進行局部直方圖規定化處理
3.實驗分析
(1)讀取數字圖像,顯示直方圖,并進行直方圖均衡化處理
①讀取灰度圖像pollen.jpg
I=imread('pollen.jpg');??
②對原圖像進行直方圖均衡化處理
J=histeq(I);
③將均衡化后圖像的直方圖顯示為64級灰度?
imhist(J,64) ;??? %將均衡化后圖像的直方圖顯示為64級灰度
(2)讀取數字圖像,顯示直方圖,并進行直方圖規定化處理
①讀取灰度圖像mars.jpg
I=imread('mars.jpg');
②使用雙模態高斯函數作為特定的直方圖
m1 = 0.15; sig1 = 0.05;? m2 = 0.75; sig2 = 0.05;?A1 = 1; A2 = 0.07;? k = 0.002;?p = twomodegauss(m1, sig1, m2, sig2, A1, A2, k);
③對圖像進行直方圖規定化處理
J = histeq(I, p);
(3)讀取數字圖像,顯示直方圖,并進行局部直方圖規定化處理
①讀取灰度圖像mars.jpg
f=imread('mars.jpg');
②使用adpthisteq函數全部默認設置
g1=adapthisteq(f);
③將小片大小增加到[25,25]
g2=adapthisteq(f,'NumTiles',[25,25]);
④使用小片數量[25,25],使ClipLimit=0.05
g3=adapthisteq(f,"NumTiles",[25,25],"ClipLimit",0.05);
四.思考題
1.直方圖是什么概念?它反映了圖像的什么信息?
直方圖是一個統計圖表,它用于表示數字圖像中每個灰度級出現的頻率或次數。對于一幅給定的圖像,直方圖能夠展示圖像中每個像素強度值(灰度級)的分布情況。橫坐標通常代表灰度級,而縱坐標則代表該灰度級在圖像中出現的頻數或頻率。
直方圖反映了圖像的以下幾個關鍵信息:
對比度:通過直方圖,可以觀察圖像中像素強度的分布情況,從而判斷圖像的對比度。
亮度:直方圖的偏移情況可以反映圖像的整體亮度。如果直方圖主要偏向較高的灰度級,則圖像整體偏亮;反之,如果偏向較低的灰度級,則圖像整體偏暗。
動態范圍:直方圖能夠展示圖像所包含的灰度級范圍,從而反映圖像的動態范圍。
2.直方圖均衡化是什么意思?它的主要用途是什么?
直方圖均衡化是一種增強圖像對比度的方法,通過拉伸像素強度值的分布范圍來增強圖像的對比度。具體來說,它將原始圖像的直方圖變換為均勻分布的形式,從而增強圖像中不同灰度級之間的對比度。
直方圖均衡化的主要用途包括:
提高圖像對比度:通過均衡化操作,可以使圖像的灰度級分布更加均勻,從而提高圖像的對比度,使圖像中的細節更加清晰。
改善視覺效果:對于對比度較低的圖像,直方圖均衡化可以顯著改善其視覺效果,使圖像更加鮮明、生動。
預處理步驟:在圖像處理和分析中,直方圖均衡化常作為預處理步驟,為后續的特征提取、目標識別等任務提供更好的圖像質量。