数字图像处理笔记

一幅图像可以定义成一个二维函数,其中x和y是空间坐标(平面),而在任何一对空间坐标(x,y)处的幅值f成为图像在该点处的强度或者灰度,当x,y和灰度值f是有限的离散数值时, 我们成为该图像为数字图像。

灰度是表明图像明暗的数值,即黑白图像中点的颜色深度,范围一般从0到255,白色为255 ,黑色为0,故黑白图片也称灰度图像。灰度值指的是单个像素点的亮度。灰度值越大表示越亮。

图像形成模型

  • 0 < f(x, y) < ∞

函数f(x, y)可以由两个分量来表示:入射分量和反射分量,分别表示为i(x,y),r(x,y),f(x, y) = i(x,y)r(x,y)

  • 0 < i(x, y) < ∞

  • 0 < r(x, y) < 1

单色图像在任何坐标(x0, y0)处的强度(灰度)表示为:

  • ι = f(x0, y0)

由上式得取值范围:

  • Lmin ≤ ι ≤ Lmax

区间[Lmin, Lmax]成为灰度级(强度级), 实际情况常常令该区域为[0,L-1],其中ι=0为黑色,ι=L-1在灰度级中为白色。所有中间值是从黑色到白色之间变化的灰度色调。

python-opencv示例:

1
2
3
4
5
IN[1]:  import numpy as np
import cv2
img = cv2.imread('1.jpg', 0)
img.min(), img.max()
OUT[1]:(27, 255)

图像内插

从根本上看,内插是用已知数据来估计未知位置的数值的处理。比如调整图像的大小(收缩和放大),这是基本的图像重取样方法。

  • 最近邻内插法

比如一幅图由500x500放大到750x750,先创建一个750x750的网格,然后缩小和原图像匹配,显然收缩后的750x750网格像素间隔要小于原图像的像素间隔。然后我们在原图像中寻找最接近的像素,并把该像素的灰度赋给750x750网格的新像素。当我们完成对网格中所有点的灰度赋值后,就把图像扩展到原来规定的大小,得到图像。

这种方法把原图像中最近邻的灰度赋给了每个新位置。

  • 双线性内插

我们使用4个最近邻去估计给定位置的灰度,由v(x,y)来表示灰度值,公式为

  • v(x,y) = ax + by + cxy + d

  • 双三次内插

使用16个最近邻点,公式为:

  • v(x,y) = ∑(3 i=0)∑(3 j=0)a(ij)x^i*y^j

双三次内插在保持细节方面比双线性内插要好,商业图像编辑软件标准内插方法,比如Adobe Photoshop

在matplotlib.pylot.imshow的一个选项中,interpolation是选择内插方法

未完待续

文章目录
  1. 1. 图像形成模型
  2. 2. 图像内插
  3. 3. 未完待续
|