matlab中的histeq函数内部是怎样实现直方图均衡化的,求高人指点?自己按照教材做的与其都有出入。

如题所述

1、首先是图像的读入与double精度化。

2、将图像对比度增大的图像、直方图和将其均衡化的图像、直方图。

3、将图像对比度减小的图像、直方图和将其均衡化的图像、直方图。

4、将图像线性增加亮度的图像、直方图和将其均衡化的图像、直方图。

5、将图像线性减小亮度的图像、直方图和将其均衡化的图像、直方图。

6、完成后看效果,可以看出,线性变换后的图像的均衡化结果基本相同。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
我只知道个大概 :p
J = histeq(I, n) 是将图像的直方图按尽可能平均分配的方式均衡化。I是图像,n是直方图的个数

J = histeq(I, hgram) 中可以用hgram自己设置直方图的分配形式。
不指定的hgram的话,它默认为hgram = ones(1,n)*prod(size(A))/n;

你要做的题是什么?追问

问题简要的讲就是不用系统函数,用matlab或opencv均衡化一副图像?

追答

额,太简要了,我不太清楚你与教材的出处在哪里

追问

教材就是《数字图像处理(第三版)》阮秋琦等译,电子工业出版社的;里边的方法我试过了,与matlab中的histeq结果不同,我只是想知道其内部怎么实现的!话说这个技术广泛应用哦,与教才没关系吧!网上很多方法都是这种处理啊!

追答

抱歉,我是想说不知道出入在哪里,不是出处 :p
我手边没有教材,不太清楚里面的方法,我想可能是他们的cost function设的不同吧,不过算法大同小异哦。

追问

这,搞了这久,你也不明白,我来告诉你吧(昨天和同学研究出来的),其实我和系统的算法相同,就是在调用的时候imhist有两个参数,第一个是矩阵,第二个是灰阶,第二个我使用时没有填,默认处理为64灰阶,而图像的灰阶为256的,造成生成的直方图有问题,后面加一个参数就对了。
不过,还是感谢你的帮助,希望你能帮助更多需要帮助的人,记住要力所能及!不要不懂装懂,误导他人就行了!Thanks!!!!

追答

谢谢你的教诲,你说的我知道 ,但我并不知道你的算法,你之前在问题中也没提到你的imhist是怎么调用的。我并没有想误导你,是我没考虑周全,下次我会向你要整个程序。
最后祝贺你成功解决问题。

追问

你是搞数学的?还是计算机的?加个好友吧,有事尽管直hi,我是学计算机的!

追答

我是学通信信号的。好的呵呵

本回答被提问者采纳