图像处理(4)_灰度线性变换

上篇讲了直方图均衡化。

这篇讲的是灰度的线性变换。  这些都是比较基础的处理方法。

最近在看傅立叶变换,感慨自己那时候高数,线性代数没学会。

许多人,都觉得大学的许多科目跟实际生活没什么挂钩,我个人也这么觉得。

但相比大学空闲的时间,即便不学,也要了解下。  不然,假如某天你要用到一些东西,或许你都不知道从哪入手。

好了进入正题:

灰度线性变换:

灰度的线性变换就是将图像中所有的点按照线性灰度变换函数进行变换。该线性灰度变换函数f(x)是一个一维线性函数:
              f(x)=fA*x+fB
灰度变换方程为:
              D2=f(D1)=fA*D+fB
式中参数fA为线性函数的斜率,fB为线性函数的在y轴上的截距,D1为输入图像的灰度,D2为输出的图像灰度。当fA>1时,输出的图像的对比度增大;当fA<1时,输出图像的对比度将减小;当fA=1且fB!=0时,操作仅仅使所有像素的灰度值上移或下移,其效果是使整个图像更亮或更暗;特殊情况下,如果fA=1,fB=0时,输出图像和输入图像相同;当fA=-1,fB=255时,输出图像的灰度正好反转。
 
以上是百度知道上的解释,解释基本没问题。
 
源码:
 
 public static Bitmap GayLinesChange(Bitmap tp, double a, double b)
       {
           int w = tp.Width;
           int h = tp.Height;
           int i, j, gray;
           byte [] ky = new byte[w*h];
           ky = ChangeByte(tp);
            for (i = 0; i < h; i++)
            {
                for (j = 0; j < w; j++)
                {
                    gray = (int)(ky[i * w + j] * a + b);
                    if (gray > 255)
                        gray = 255;
                    else if (gray < 0)
                        gray = 0;
                    ky[i * w + j] = (byte)(gray);
                }
            }           tp = ChangeBitmap(ky, tp);
           return tp;
       }

关于 ChangeBitmap() 以及 ChangeByte(); 前面已经提到。
OK了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值