我有一系列亮度下降的图像,我想尝试用直方图均衡来校正。我将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.873
和1.000
。为什么输出不会跨越整个输入范围?我希望输出中有两个以上的唯一值。
答案 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