灰度直方图
是灰度级的函数,描写叙述的是图像中该灰度级的像个数或该灰度级像素出现的频率(归一化)
- 生成并绘制直方图:
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 = histeq(src); %均衡化 imshow(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); %获取直方图自适应均衡化后的图像