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

灰度直方图

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


  • 生成并绘制直方图:
  1. src = imread('Fig0303(a)(breast).tif');  
  2. imshow(src);  
  3. h1 = imhist(src);                      %生成直方图  
  4. figure,imhist(src,255);             %绘制直方图  
  5.   
  6. h2 = imhist(src, 25);                 %生成直方图  
  7. horz = linspace(0, 255, 25);  
  8. figure,bar(horz, h2);                 %绘制条状直方图  
  9. axis([0 255 0 60000]);               %设置座标轴最大最小值  
  10. set(gca, 'xtick', 0:50:250);          %设置座标轴的标尺  
  11. set(gca, 'ytick', 0:20000:60000);  
  12. xlabel('灰度级', 'fontsize', 10);  %座标轴附加图像  
  13. ylabel('灰度值', 'fontsize', 10);  
  14. text(150, 40000, '条形直方图', 'fontsize',15);  
  15.   
  16. h3 = imhist(src, 25);                 %生成直方图  
  17. horz = linspace(0, 255, 25);  
  18. figure,stem(horz, h3, 'fill');      %绘制杆状直方图  
  19. axis([0 255 0 60000]);               %设置座标轴最大最小值  
  20. set(gca, 'xtick', 0:50:250);         %设置座标轴的标尺  
  21. set(gca, 'ytick', 0:20000:60000);  
  22. xlabel('灰度级', 'fontsize', 10); %座标轴附加图像  
  23. ylabel('灰度值', 'fontsize', 10);  
  24. text(150, 40000, '杆状直方图', 'fontsize',15);  
  25.   
  26. h4 = imhist(src);                       %生成直方图  
  27. figure,plot(h4);                         %绘连续直方图  
  28. xlim('auto');                              %自动设置座标轴范围和标尺  
  29. ylim('auto');  
  30. text(150, 40000, '连续直方图', 'fontsize',15);  
save_snippets.png
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);


 
  • 直方图均衡化(可使图像的灰度间距拉开或使灰度分布均匀):
  1. src = imread('Fig0303(a)(breast).tif');  
  2. result = histeq(src);    %均衡化  
  3. imshow(result);  
save_snippets.png
src = imread('Fig0303(a)(breast).tif');
result = histeq(src);    %均衡化
imshow(result);






  • 自适应直方图均衡化:
  1. src = imread('Fig0303(a)(breast).tif');  
  2. result = adapthisteq(src);%自适应直方图均衡化  
  3. figure, imshow(src);  
  4. figure, imhist(src);  
  5. figure, imshow(result);  
  6. figure, imhist(result);  
save_snippets.png
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);      %获取直方图自适应均衡化后的图像



发布了10 篇原创文章 · 获赞 94 · 访问量 18万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章