数字图像处理

1. 数字图像概述

1.1 图像的基本概念
图像因其表现方式的不同分为连续图像离散图像两大类。

  • 连续图像:指在二维坐标系中连续变化的图像,即图像的像点是无限稠密的,同时具有灰度值。又称为模拟图像
  • 离散图像:指用一个数字序列表示的图像。该阵列中的最小单位称为像素,每个像素由数字表示图像上每点的信息,又称为数字图像

1.2 图像的数字化采样
目前的计算机只能处理数字信号,因此必须将连续的图像信息转化为数字形式,即需要数字化的采样与量化。

  • 图像采样就是按照图像空间的坐标测量该位置上像素的灰度值。一般采用等间隔采样:将 ( x , y ) (x,y) (x,y)平面上的图像分成均匀的小网格,采样值对应每个位置上网格的灰度值。
  • 将模拟图像在空间上离散化为像素后,各个像素点的灰度值仍是连续量,此时需要把像素的灰度值进行量化,分为若干个灰度等级。

一幅图像经过采样和量化后便得到一幅数字图像,通常用一个矩阵来表示。矩阵中的元素称为像素。Matlab图像工具箱中像素值的表示支持各种数据类型:整数、浮点数、字符、逻辑算符,图像类型之间的转换函数有ind2gray、gray2ind、rgb2ind、ind2rgb、ntsc2rgb、rgb2ntsc等,可使用imtool命令查看一个图像文件的信息。

1.3 图像类型
在计算机中,按颜色和灰度的多少可以将图像分为二值图像、灰度图像、索引图像、RGB图像四种基本类型。

  • 二值图像:矩阵元素仅由0、1两个值构成,0代表黑色,1代表白色。二值图像在Matlab中是一个取值只有0和1的逻辑数组,一个取值只有0和1的整型数组Matlab并不认为是二值图像。
B=logical(A)	%将数值型数组A转为逻辑数组B。数值0转为逻辑0,其他数值转为逻辑1
  • 灰度图像:矩阵元素的整数取值范围通常为[0,255],此时其数据类型一般为8位无符号整数(uint8)。若灰度图像的像素值是uint16类,则其整数取值范围为[0,65535]。若图像是double类,则像素取值范围为[0,1]。
  • RGB彩色图像:若一幅RGB图像的数据类型是double,则它的取值范围就是[0,1]。类似地,数据类型也可以是uint8、uint16等。
  • 索引图像:索引图像有两个分类,数据矩阵X和彩色映射矩阵map。map是一个大小为m×3且范围在[0,1]间由浮点数构成的double类数组,map的长度m同它所定义的颜色数目相等,map的每一行定义红、绿、蓝三个分量。每个像素的颜色由对应矩阵X的值作为指向map的一个指针决定。

2. 亮度变换与空间滤波

2.1 亮度变换
Matlab中使用函数imadjust对图像进行亮度变换。

g=imadjust(f,[low_in,high_in],[low_out,high_out],gamma)	%将图像f中的亮度值映射到g中的新值
%即将low_in至high_in之间的值映射到low_out至high_out之间的值
%参数gamma为调节权重,若gamma小于1则被映射到更亮的输出值,大于1责备映射到更暗的输出值
g=imadjust(f,[0,1],[1,0])	%图像亮度反转

2.2 线性空间滤波器
拉普拉斯滤波器增强图像的基本公式为 g ( x , y ) = f ( x , y ) + c ∇ 2 f ( x , y ) g(x,y)=f(x,y)+c\nabla^2f(x,y) g(x,y)=f(x,y)+c2f(x,y)式中:f为输入图像;g为输出图像;c取1或-1。
对离散的数字图像,拉普拉斯算子 ∇ 2 \nabla^2 2对图像f的作用就相当于如下矩阵 T 1 \bm{T}_1 T1与f相乘 T 1 = [ 0 1 0 1 − 4 1 0 1 0 ] \bm{T}_1=\begin{bmatrix}0&1&0\\1&-4&1\\0&1&0\end{bmatrix} T1=010141010 T 1 \bm{T}_1 T1为滤波器或掩膜。或使用如下的矩阵 T 2 \bm{T}_2 T2近似拉普拉斯算子 T 2 = [ 1 1 1 1 − 8 1 1 1 1 ] \bm{T}_2=\begin{bmatrix}1&1&1\\1&-8&1\\1&1&1\end{bmatrix} T2=111181111该矩阵更逼近二阶导数,对图像的改善作用更好。这些近似矩阵中心原始为负数时c=-1,反之c=1。
也可以选取其他的拉普拉斯近似矩阵,Matlab中函数fspecial(‘laplacian’,α)构造一个如下的拉普拉斯算子掩膜 [ α 1 + α 1 − α 1 + α α 1 + α 1 − α 1 + α − 4 1 + α 1 − α 1 + α α 1 + α 1 − α 1 + α α 1 + α ] \begin{bmatrix}\cfrac{\alpha}{1+\alpha}&\cfrac{1-\alpha}{1+\alpha}&\cfrac{\alpha}{1+\alpha}\\\cfrac{1-\alpha}{1+\alpha}&\cfrac{-4}{1+\alpha}&\cfrac{1-\alpha}{1+\alpha}\\\cfrac{\alpha}{1+\alpha}&\cfrac{1-\alpha}{1+\alpha}&\cfrac{\alpha}{1+\alpha}\end{bmatrix} 1+αα1+α1α1+αα1+α1α1+α41+α1α1+αα1+α1α1+αα

h1=fspecial('laplacian',0)	%构造一个T1滤波器
g1=f-imfilter(f,h1)		%相当于c=-1,即从原图像中减去拉普拉斯算子处理的结果

2.3 非线性空间滤波器
Matlab中非线性滤波器的函数为ordfilt2,它可以生成统计排序滤波器。该滤波器基于对图像邻域中所包含的像素进行排序,然后使用排序结果确定的值来替代邻域中的中心像素的值。

g=ordfilt2(f,order,domain)	%使用邻域的一组排序元素中的第order个元素来替代f中的每个元素,该邻域由domain中的非零元素指定
g=ordfilt2(f,1,ones(m,n))	%最小滤波器
g=ordfilt2(f,m*n,ones(m,n))	%最大滤波器
g=ordfilt2(f,median(1:m*n),ones(m,n))	%中值滤波器
%基于中值滤波器的实用性,工具箱提供了一个二维中值滤波函数medfilt2
g=medfilt2(f,[m,n])
g=medfilts(f)	$使用3*3的邻域来计算中值,并用0来填充输入图像的边界

3. 频域变换

为了快速有效地对图像进行处理和分析,如图像增强、图像分析、图像复原、图像压缩等,常需要将原定义在图像空间的图像以某种形式转换到频域空间,并利用频域空间的特有性质方便地进行一定的加工,最后再转换回图像空间,以得到所需要的效果。

3.1 傅里叶变换
傅里叶变换将图像从空域变换到频域。

3.1.1 二维连续傅里叶变换 F ( u , v ) = ∫ − ∞ + ∞ ∫ − ∞ + ∞ f ( x , y ) e − i u x e − i u y d x d y F(u,v)=\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}f(x,y)e^{-iux}e^{-iuy}dxdy F(u,v)=++f(x,y)eiuxeiuydxdy式中,x和y为空间变量;u和v为频率变量;F(u,v)称为f(x,y)的频率表示。
二维傅里叶逆变换定义为 f ( x , y ) = 1 4 π 2 ∫ − ∞ ∞ ∫ − ∞ ∞ F ( u , v ) e i u x e i u y d u d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值