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