MATLAB图像直方图均衡化

MATLAB图像直方图均衡化

(1)图像直方图均衡化

      图像直方图是对图像灰度出现频数的统计(这里只研究灰度图,暂不讨论多通道图像)。一张高对比度的图,往往各个灰度级出现频次相近,因此在图像增强时时常希望将使直方图均衡。

(2)MATLAB函数实现

      MATLAB本身自带直方图均衡化函数:histeq(),最简单的调用就是以想处理的图像作为输入变量即可。同时MATLAB还提供了一个函数:adapthisteq(),可以进行自适应的直方图均衡化。这两者对同一张图像处理的区别见下图:

原图直方图


处理效果图


处理后直方图


      可以看出,自适应全局直方图均衡化效果会更好一些。

(3)自编程序实现

      通过以下自编程序实现了直方图均衡化(具体算法略):

%读入待处理图片
original = imread('F:\Fig0327(a)(tungsten_original)','tif');
%获取待处理图片尺寸
[h w] = size(original);
%直方图统计
p = zeros(1,256);
for i = 1:256
   p(i) = sum(sum(original == (i-1)));
end
p = double(p);
p = p./(h*w);
figure(1);
bar(0:255,p);hold on;%这里直接bar(p)会导致横坐标与灰度值差1
axis([0 255 0 0.12]);
title('我的直方图分布');
% 直方图均衡化
s = zeros(1,256);
for i = 1:256
    for j = 1:i
        s(i) = s(i)+255*p(j);
    end
end
s = uint8(s);
for i = 1:h
    for j = 1:w
        for k = 1:256
            if original(i,j) == k-1
                original(i,j) = s(k);
                break;%防止重复赋值
            end
        end
    end
end
figure(2);
subplot(1,3,1)
imshow(original);hold on;
title('原图像');

       这串代码未经优化,占用了大量资源、耗费了大量时间,有待改进。但是真正的问题是它的处理效果和MATLAB自带函数不同,结果如下:

处理效果图


统计直方图


      出现原因有待考证。(有点忙)

(4)资料来源

     冈萨雷斯的《数字图像处理》啦~

      

阅读更多
上一篇ubuntu16.04.3中caffe编译
下一篇Ubuntu 16.04上pycharm community版配置
想对作者说点什么? 我来说一句

matlab 灰度图像直方图均衡化

2010年03月03日 866B 下载

没有更多推荐了,返回首页

关闭
关闭