VC下通过直方图变换对图像进行有效增强
2008-11-14 19:33:58 来源:WEB开发网核心提示: 接下来的对原始图和规定直方图计算累计直方图同前面的直方图均衡化基本一样,在此不在赘述,VC下通过直方图变换对图像进行有效增强(5),重点是根据SML规则把ps(si)映射到pu(uj)中去:for(i=0;i<256;i++){……for(int j=0;
接下来的对原始图和规定直方图计算累计直方图同前面的直方图均衡化基本一样,在此不在赘述。重点是根据SML规则把ps(si)映射到pu(uj)中去:
for(i=0;i<256;i++)
{
……
for(int j=0;j<64;j++)
{
float now_value=0.0f;
//计算R分量的两累计直方图的绝对差值,并找到满足最小的灰度级
if(ps_r[i]-pu[j]>=0.0f)
now_value=ps_r[i]-pu[j];
else
now_value=pu[j]-ps_r[i];
if(now_value<min_value_r)
{
m_r=j;
min_value_r=now_value;
}
……
//对G和B分量的代码与R分量类似,在此省略
……
}
//建立灰度映射关系
ns_r[i]=nu[m_r];
ns_g[i]=nu[m_g];
ns_b[i]=nu[m_b];
}
在得到ps(si)到pu(uj)的映射关系后按照该映射关系把原图的原始灰度值映射到经过均衡化的新灰度级上,完成最后的处理。上图为实验得到的按单映射规则对直方图规定化后的效果,同直方图均衡化处理效果相比可以看出高亮度部分得到了充分的增强。
采取组映射规则的直方图规定化处理
单映射规则虽然实现起来比较简单直观,但在实际处理时仍存在不可忽视的取整误差,因此在一定程度上还不能很好的实现规定直方图的意图。
可以通过在规定化直方图时选取适当的对应规则来改善,一种比较好的对应规则是组映射规则(group mapping law,GML)。这种规则的约定如下:
更多精彩
赞助商链接