新手问个迭代阈值分割图像中的平均灰度值问题

xupeiying 2008-04-02 10:31:54
迭代法是基于逼近的思想,其步骤如下:
1. 求出图象的最大灰度值和最小灰度值,分别记为ZMAX和ZMIN,令初始阈值T0=(ZMAX+ZMIN)/2;
2. 根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值ZO和ZB

3. 求出新阈值TK+1=(ZO+ZB)/2;

4. 若TK=TK+1,则所得即为阈值;否则转2,迭代计算。
我想问下,ZO和ZB怎么求??
...全文
817 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dream17953 2010-04-08
  • 打赏
  • 举报
回复
我了解迭代阈值的计算方法,但是对迭代法的物理意义不是很明白,
Fxingtianxia 2008-04-03
  • 打赏
  • 举报
回复
需要几分下载点资源
vcPlayer 2008-04-03
  • 打赏
  • 举报
回复
遍历一下,算术平均就可以了。

dobule ZO = .0, ZB = .0;
int nB = 0, nO = 0;
BYTE bytVal = 0;

while( 还有图像数据没读完 )
{
bytVal = ReadNextPixel();
if( bytVal > T0 )
{
ZB += bytVal;
++nB;
}
else
{
ZO += bytVal;
++nO;
}
}
ZO /= nO;
ZB /= nB;
sunrisemaple 2008-04-02
  • 打赏
  • 举报
回复
1.统计图像灰度直方图
2.找到最大最小灰度值并计算T0
3.计算小于T0的所有灰度的均值ZO和大于T0的所有灰度的均值ZB(用直方图求就可以)。

例如,你的直方图从10到250有值,则T0 = 260/2 = 130.
ZO = Sum(nHist[i] * i) / Sum(nHist[i]); 10 <= i <= 130
BO = Sum(nHist[i] * i) / Sum(nHist[i]); 131 <= i <= 250

19,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧