【数字图像处理之(四)】用图像增强谈灰度直方图

来源:互联网 发布:vba聊天软件 编辑:程序博客网 时间:2024/06/06 05:34

灰度直方图

是灰度级的函数,描述的是图像中该灰度级的像个数或该灰度级像素出现的频率(归一化)


  • 生成并绘制直方图:
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);      %获取直方图自适应均衡化后的图像



0 0