灰度直方圖
是灰度級的函數,描述的是圖像中該灰度級的像個數或該灰度級像素出現的頻率(歸一化)
- 生成並繪製直方圖:
- src = imread('Fig0303(a)(breast).tif');
- imshow(src);
- h1 = imhist(src); %生成直方圖
- figure,imhist(src,255); %繪製直方圖
- h2 = imhist(src, 25); %生成直方圖
- horz = linspace(0, 255, 25);
- figure,bar(horz, h2); %繪製條狀直方圖
- axis([0 255 0 60000]); %設置座標軸最大最小值
- set(gca, 'xtick', 0:50:250); %設置座標軸的標尺
- set(gca, 'ytick', 0:20000:60000);
- xlabel('灰度級', 'fontsize', 10); %座標軸附加圖像
- ylabel('灰度值', 'fontsize', 10);
- text(150, 40000, '條形直方圖', 'fontsize',15);
- h3 = imhist(src, 25); %生成直方圖
- horz = linspace(0, 255, 25);
- figure,stem(horz, h3, 'fill'); %繪製桿狀直方圖
- axis([0 255 0 60000]); %設置座標軸最大最小值
- set(gca, 'xtick', 0:50:250); %設置座標軸的標尺
- set(gca, 'ytick', 0:20000:60000);
- xlabel('灰度級', 'fontsize', 10); %座標軸附加圖像
- ylabel('灰度值', 'fontsize', 10);
- text(150, 40000, '桿狀直方圖', 'fontsize',15);
- h4 = imhist(src); %生成直方圖
- figure,plot(h4); %繪連續直方圖
- xlim('auto'); %自動設置座標軸範圍和標尺
- ylim('auto');
- text(150, 40000, '連續直方圖', 'fontsize',15);
src = imread('Fig0303(a)(breast).tif'); imshow(src); h1 = imhist(src); %生成直方圖 figure,imhist(src,255); %繪製直方圖 h2 = imhist(src, 25); %生成直方圖 horz = linspace(0, 255, 25); figure,bar(horz, h2); %繪製條狀直方圖 axis([0 255 0 60000]); %設置座標軸最大最小值 set(gca, 'xtick', 0:50:250); %設置座標軸的標尺 set(gca, 'ytick', 0:20000:60000); xlabel('灰度級', 'fontsize', 10); %座標軸附加圖像 ylabel('灰度值', 'fontsize', 10); text(150, 40000, '條形直方圖', 'fontsize',15); h3 = imhist(src, 25); %生成直方圖 horz = linspace(0, 255, 25); figure,stem(horz, h3, 'fill'); %繪製桿狀直方圖 axis([0 255 0 60000]); %設置座標軸最大最小值 set(gca, 'xtick', 0:50:250); %設置座標軸的標尺 set(gca, 'ytick', 0:20000:60000); xlabel('灰度級', 'fontsize', 10); %座標軸附加圖像 ylabel('灰度值', 'fontsize', 10); text(150, 40000, '桿狀直方圖', 'fontsize',15); h4 = imhist(src); %生成直方圖 figure,plot(h4); %繪連續直方圖 xlim('auto'); %自動設置座標軸範圍和標尺 ylim('auto'); text(150, 40000, '連續直方圖', 'fontsize',15);
- 直方圖均衡化(可使圖像的灰度間距拉開或使灰度分佈均勻):
- 自適應直方圖均衡化:
- src = imread('Fig0303(a)(breast).tif');
- result = adapthisteq(src);%自適應直方圖均衡化
- figure, imshow(src);
- figure, imhist(src);
- figure, imshow(result);
- figure, imhist(result);
src = imread('Fig0303(a)(breast).tif'); result = adapthisteq(src);%自適應直方圖均衡化 figure, imshow(src); figure, imhist(src); figure, imshow(result); figure, imhist(result);
- MATLAB函數小結:
imhist( ):該函數用於獲取圖像數據直方圖。(PS:若沒有賦值給左邊的變量,該函數將顯示一張灰度直方圖)
h1 = imhist( src, n )src--輸入圖像n --灰度級別,默認爲256
linspace(a, b, n):該函數生成一個(1xn)數組,數據的第一個元素值爲a,最後一個元素爲b,n是總採樣點數。(PS:所有元素的值均勻分佈)bar(horz, h2):繪製條狀直方圖,通過horz控制直方圖顯示的密集程度
horz -- 一個(1xn)數組(跟h2同階)h2 -- 要繪製的直方圖
stem(horz, h3, 'fill'):繪製桿狀直方圖
horz -- 一個(1xn)數組(跟h2同階)h2 -- 要繪製的直方圖'fill' -- 杆頭是否空心
plot(h4):繪連續直方圖result = histeq(src); %獲取直方圖均衡化後的圖像result = adapthisteq(src); %獲取直方圖自適應均衡化後的圖像