DIP 图像增强-----空间域处理


图像的感知和获取

我们感兴趣的多数图像都是用“照射 ”源和形成图像的场景元素对光能的反射或吸收而产生的。
通过将输入电能和对特殊类型检测能源敏感的传感器材料组合,把输入能源转变为电压。输出电压波形是传感器的相应,通过把传感器响应数据化,从每一个传感器得到一个数字量。
这里写图片描述

简单图像形成模型


我们用形如 f(x,y)  f ( x , y ) 的二维函数来表示图像。 在空间坐标 (x,y)  ( x , y ) 出, f  f 的值或幅度是一个证的标量,其物理意义有图像源决定。当一副图像由物理过程产生时,其亮度值正比于物理源(x线)所辐射的能量。 0<f(x,y)<

这里写图片描述

入射到被观察场景的光源照射量
场景中物体所反射的光照总量


图像的取样,量化

这里写图片描述
图形的采样和量化是连续图像的离散化。
图形的采样: 这个应该是空间分辨率的概念,单位距离内采样的点的间隔。
图像的量化: 像素分辨率的概念。 简单的说就是灰度级。 普通量化灰度级是0~256。
《数字图像处理》中有一个图形很好的说明的采样和量化的概念。
这里写图片描述

数字图像的表示

这里写图片描述


这里写图片描述


图像的大小

s=MNk  s = M ∗ N ∗ k M,N是图像的大小,相当于矩阵的行列的大小。 k  k 是 灰 度 级 的 指 数 。
灰度级 L=2 k   L = 2 k


空间内插

内插:是用已知数据来估计未知位置的处理。

最近邻域插值法

// 图像放大 *2
int x = 0,
    y = 0,
    i = 0,
    j = 0;
for(int y = 0; y < 256; y++)
{
    for(int x = 0; x < 256; x++)
    {
        i = y * 2;
        j = x * 2;
        OutputArray[i][j] = InputArray[y][x];
    }
}

// 最近邻内插值法
//从x轴开始
for(int y = 0; y < 512; y++)
{
    for(int x = 0; x < 512; x+=2)
    {
        for(int m = 1; m < 2; m++)
        {
            Outputarray[y][x-m] = Outputarray[y][x];
        }
    }
}
//y轴进行插值
for(int x = 0; x < 512; x++)
{
    for(int y = 0; y < 512; y+=2)
    {
        for(int m = 1; m < 2; m++)
        {
            Outputarray[y-m][x] = Outputarray[x][y];
        }
    }
}

最近邻内插法:直边缘会严重失真。

双线性内插

OutputArray(x,,y)=ax+by+cxy+d  O u t p u t A r r a y ( x , , y ) = a x + b y + c x y + d
其中 4个系数可由4个用 (x,y)  ( x , y ) 点最近邻点写出的未知方程确定. 这个是《数字图像处理》上面的一段话。读的很是不明白, 所以就在网上找了一下相关的博客。

线性插值

已知数据 x 0 ,y 0   ( x 0 , y 0 ) 与数据 x 1 ,y 1   ( x 1 , y 1 ) 要计算 [x 0 ,x 1 ]  [ x 0 , x 1 ] 区间内某一位置 x  x 在直线上的y值,

yy 0 xx 0  =y 1 y 0 x 1 x 0    y − y 0 x − x 0 = y 1 − y 0 x 1 − x 0 这个公式是直线方程的两点式

y=x 1 xx 1 x 0  y 0 +xx 0 x 1 x 0  y 1   y = x 1 − x x 1 − x 0 y 0 + x − x 0 x 1 − x 0 y 1

这个公式其实就是用 x  x x0, x 1   x 1 的距离作为一个权重,用于 y 0   y 0 y 1   y 1 的加权。双线性插值本质就是在两个方向上做线性插值。

双线性插值

在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。
这里写图片描述

假如我们想得到未知函数 f  f 在点P=(x,y)上的值,假设我们已知函数 f  f Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1),Q22=(x2,y2)四个点的值。最常见的情况, f  f 就是一个像素点的像素值。
首先在X方向进行线性插值,得到
f(R 1 )x 2 xx 2 x 1  f(Q 11 )+xx 1 x 2 x 1  f(Q 21 )  f ( R 1 ) ≈ x 2 − x x 2 − x 1 f ( Q 11 ) + x − x 1 x 2 − x 1 f ( Q 21 ) where R 1 =(x,y 1 )  R 1 = ( x , y 1 )

f(R 2 )x 2 xx 2 x 1  f(Q 12 )+xx 1 x 2 x 1  f(Q 22 )  f ( R 2 ) ≈ x 2 − x x 2 − x 1 f ( Q 12 ) + x − x 1 x 2 − x 1 f ( Q 22 ) where R 2 =(x,y 2 )  R 2 = ( x , y 2 )

然后在 Y  Y 方向进行线性插值

f(P)y2xy2y1f(R1)+yy1y2y1f(R2)

综合起来就是双线性插值最后结果:

f(x,y)f(Q 11 )(x 2 x 1 )(y 2 y) (x 2 x)(y 2 y)+f(Q 21 )(x 2 x 1 )(y 2 y) (x 2 x)(y 2 y)+f(Q 12 )(x 2 x 1 )(y 2 y) (x 2 x)(y 2 y)+f(Q 22 )(x 2 x 1 )(y 2 y) (x 2 x)(y 2 y)  f ( x , y ) ≈ f ( Q 11 ) ( x 2 − x 1 ) ( y 2 − y ) ( x 2 − x ) ( y 2 − y ) + f ( Q 21 ) ( x 2 − x 1 ) ( y 2 − y ) ( x 2 − x ) ( y 2 − y ) + f ( Q 12 ) ( x 2 − x 1 ) ( y 2 − y ) ( x 2 − x ) ( y 2 − y ) + f ( Q 22 ) ( x 2 − x 1 ) ( y 2 − y ) ( x 2 − x ) ( y 2 − y )

由于图像双线性插值只会用相邻的4个点,因此上述公式的分母都是1.
例如:如果选择一个坐标系统使得 f 的四个已知点坐标分别为 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),那么插值公式就可以化简为
f(x,y)f(0,0)(1x)(1y)+f(1,0)x(1y)+f(0,1)(1x)y+f(1,1)xy  f ( x , y ) ≈ f ( 0 , 0 ) ( 1 − x ) ( 1 − y ) + f ( 1 , 0 ) x ( 1 − y ) + f ( 0 , 1 ) ( 1 − x ) y + f ( 1 , 1 ) x y .

值得注意的是坐标系的选择问题,或者说源图像和目标图像之间的对应问题。
源图像和目标图像的原点 (0,0)  ( 0 , 0 ) 均选择左上角,然后根据插值公式计算目标图像每点像素,假设你需要将一副 5×5  5 × 5 的图像缩小成 3×3  3 × 3 ,那么源图像和目标图像各个像素之间的对应关系如下 :

这里写图片描述 image 1

从图中可以很明显的看到,如果选择右上角为原点 0,0  ( 0 , 0 ) ,那么最右边和最下边的像素实际并没有参与计算,而且目标图像的每个像素点计算出灰度值也相对于源图像偏左偏上。

那么,让坐标加1或者选择右下角为原点怎么样呢? 很不幸,还是一样的效果,不过这次得到的图像将偏右偏下。

最好的方法就是,两个图像的几何中心重合,并且目标图像的每个像素之间都是等间隔的。并且都和两边有一定的边距。

这里写图片描述 image 2

int x = (i + 0.5) * (m/a) - 0.5  //(m/a)(n/b) 是源图像和目标图像的行列之比 
int y = (j + 0.5) * (n/b) - 0.5
//替换下面公式
int x = i * (m/a);
int y = j * (n/b);

图像缩小(down sampled) 下采样或者降采样。 目的:
1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。
图像放大(up sampled)上采样或者图像插值。
主要目的:放大原图像,从而可以显示在更高分辨率的显示设备上。
对图像的缩放操作并不能带来更多关于该图像的信息, 因此图像的质量将不可避免地受到影响。然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量。


2.6.2线性操作和非线性操作

这里写图片描述 iamge 1

这里写图片描述image 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值