关闭

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

3802人阅读 评论(0) 收藏 举报
分类:

灰度变换法:

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

(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;
    }

    }

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:391790次
    • 积分:4863
    • 等级:
    • 排名:第5842名
    • 原创:116篇
    • 转载:70篇
    • 译文:12篇
    • 评论:41条
    最新评论