直方图均衡产生意想不到的结果

时间:2016-08-02 12:01:35

标签: matlab image-processing signal-processing histogram contrast

我有一系列亮度下降的图像,我想尝试用直方图均衡来校正。我将histeq应用于某些测试数据,以了解该函数的工作原理

% Image that I would like to apply histogram equalization to
C = gallery('wilk',21);
figure, imagesc(C)

E = histeq(C);
figure, imagesc(E);

但是,当我查看histeq的输出时,我得到的结果只有两个唯一值:0.8731.000。为什么输出不会跨越整个输入范围?我希望输出中有两个以上的唯一值。

enter image description here

1 个答案:

答案 0 :(得分:2)

根据double的文档,如果输入的类型为single[0, 1],则预计其范围为:double

  

强度值在适当的范围内:[0,1]用于类double的图像,[0,255]用于类uint8的图像,[0,65535]用于类uint16的图像。

您的数据未规范化,类型为whos C % Name Size Bytes Class Attributes % % C 21x21 3528 double [min(C(:)), max(C(:))] % 0 10

mat2gray

您需要先将其标准化。您可以使用E = histeq(mat2gray(C)); 执行此操作:

$ code2flow source1.js source2.js -o out.gv

enter image description here