Matlab中直方图均衡化问题!

来源:百度知道 编辑:UC知道 时间:2024/04/28 01:51:28
看到书上直方图均衡化定义是:第k个像素值变换为小于等于该值的所有像素点/总的像素点。比如:I=[0,0.5,0.5,1,1,1]变换后应为[0.6,0.5,0.5,1,1,1]
但histeq变成了[0.6,0.3,0.3,1,1,1]。请问histeq命令具体执行的是什么变换?
sorry,是我打错了,是[0.16,0.3,0.3,1,1,1]。另外还是没明白:你说的“小于等于0的概率为1/6,等于0.5的占1/3,小于等于1”,这似乎不对呀,为什么两边都是小于等于的概率,而中间的确只是等于0.5所占概率??如果是小于等于0.5的概率就应该是0.5而不是0.3啊!希望指点!

直方图均衡化的定义表明直方图均衡是原图像的累计分布函数。但是直方图里必须保证灰度级是从黑道白的顺序,而且必须保证映射后的像素灰度级仍在允许的范围之内。

另外:
如:I=[0,0.5,0.5,1,1,1]变换后应为[0.6,0.5,0.5,1,1,1]
请问你这里是什么变换?是0.6还是0.16啊?

不好意思啊,我之前的解答错了,现更正如下:
正好我前几天学习了数字图像处理的直方图内容,你的这个I有问题,I的各个值相加应该等于1,参见《图像处理与分析》(清华大学出版社)上册第78页。我现在把直方图均衡化的具体步骤写出来。
第一步,由计算原始直方图I,I的和是概率1.
第二步,计算累计直方图。明白什么意思吗?举个例子吧:比如I=[0.19,0.25,0.21,0.16,0.08,0.06,0.03,0.02]变成[0.19,0.44,0.65,0.81,0.89,0.95,0.98,1].
第三步,取整。就是用7(8-1)去乘以累计直方图的各个值,然后将得到的值四舍五入,映射到相应的灰度区域。比如0.19*7=1,0.44*7=3,0.65*7=5,后面依次是6,6,7,7,7.

第四步:0区域没有,0.
1区域为0.19
2区域为0
3区域为0.44-0.19=0.25
4区域为0
5区域为0.65-0.44=0.21
6区域为0.89-0.65=0.24
7区域为1-0.89=0.11
即变换后为[0,0.19,0,0.25,0,0.21,0.24,0.11]!
你的这个原始直方图I似乎不合规矩,我没办法做!