我需要一些帮助来检测图像的主要强度区域。假设我有以下图像,我喜欢自动检测主导强度区域并找到该主要区域的平均/平均强度值。
这里,在图像-1中,主要强度区域是具有浅灰色的区域,而在图像-2中,主要区域是具有深灰色的区域。如何检测这些图像中的主要区域并找到主要区域的平均强度值。
任何建议都会有所帮助!
更新:我使用以下代码获取Image-2的直方图。图-3显示了直方图。现在,我需要找出哪个bin包含大部分值,即直方图的模式。但是,无法弄清楚如何使用大部分值来计算bin。
double minVal=0, maxVal=0; int minIdx, maxIdx;
minMaxIdx(hist,&minVal,&maxVal, &minIdx, &maxIdx);
cout<<"Max:"<<maxVal<<endl;
cout<<"MaxIdx:"<<maxIdx<<endl;
更新-2:终于工作了!我做了以下操作来获取直方图的最大bin的位置和值。
TabNavigator
MaxIdx给出直方图最高区间的位置,并且是图像的主要强度值!
答案 0 :(得分:2)
你所追求的是强度直方图的模式(频率最高的垃圾箱)。它直接告诉你平均强度。
对于给定的图像,直方图由两个非常尖锐的峰组成。
在一些不好的情况下,主峰可以分布在几个次峰上。在这种情况下,您需要在采用模式之前对直方图应用平滑处理。
查看第一个和第二个最大值的相对高度可能很有趣,以检查颜色的主导程度。