您的位置:首页 > 其它

图像变换——分段线性变换

2013-12-05 17:38 183 查看
灰度变换法:

一般成像系统只具有一定的亮度范围,亮度的最大值与最小值之比称为对比度。由于形成图像的系统亮度有限,常出现对比度不足的问题,使人眼观看图像时视觉效果很差,通过灰度变换法可以大大改善人的视觉效果。灰度变换法又可分为三种:线性分段性及分线性变换。

(1)线性变换

假定原图像f(x,y)的灰度范围为[a,b],希望变换后图像g(x,y)的灰度范围扩展至[c,d],线性变换表示式为:

g(x,y) = [(d - c) / (b - a)]f(x,y) + c

此关系式可用下图表示。若图像中大部分象素的灰度级分布在区间[a,b],很小部分的灰度级超出了此区间,为改善增强的效果,可令:

g(x , y) = c 0 < f(x , y) < a

g(x , y) = [(d - c) / (b - a)] f(x , y) + c a <= f(x , y) <= b

g(x , y) = d b < f(x , y) < Fmax

(2)分段线性变换

为了突出感兴趣的目标或灰度区间,相对抑制那些不感兴趣的目标或灰度区间,常采用分段线性变换法。常用的是三段线性变换法,其数学表达式为:

g(x , y) = (c / a)f(x , y) 0 < f(x , y) < a

g(x , y) = [(d - c) / (b - a)] f(x , y) + c a <= f(x , y) <= b

g(x , y) = [(Gmax - d) / (Fmax - b)][f(x,y) - b + d] b < f(x , y) < Fmax

上式对灰度区间[a,b]进行了线性变换,而灰度区间[0,a] [b , Fmax]受到了压缩。通过细心调整折线拐点的位置及控制分段直线的斜率,可对任一灰度区间进行扩展或压缩。这种变换适用于在黑色或白色附近有噪声干扰的情况。例如照片中的划痕,由于变换后0~a以及b~Fmax之间的灰度受到压缩,因而使噪声干扰得到减弱。

for (int i = 0; i < img_height - 1; i++)

{

for (int j = 0; j < img_width - 1; j++)

{

uchar cur = data[i * img_width + j];

cur = ratio * cur + intercept;//线性变换

data[i * img_width + j] = cur;

if (cur < 0)

{

cur =0;

}

else if(cur > 255)

{

cur =255;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: