目录
一、空间和幅度预处理
二、图像的坐标变换
1、图片的旋转
2、图片缩放
三、灰度映射
1、灰度映射原理
2、灰度映射示例
四、直方图修正
直方图均衡的实现
五、空域滤波
1、原理和分类
2、中值滤波
将一幅图像进行数字化的过程就是在计算机内生成一个二维矩阵的过程。
数字化过程包括三个步骤:扫描、采样和量化。
◆ 图像的采样: 对图像的连续空间坐标x和y的离散化。
◆ 图像灰度级的量化: 对图像函数的幅值 f 的离散化。
空间分辨率、图像尺寸、阵列大小的关系:(重点!)
一幅数字图像的阵列大小(简称为图像大小)通常用M×N表示。在景物大小不变的情况下,采样的空空间分辨率越高,获得的图像阵列M×N就越大;反之,采样的空间分辨率越低,获得的图像阵列M×N就越小。在空间分辨率不变的情况下,图像阵列M×N越大,图像的尺寸就越大;反之,图像阵列M×N越小,图像的尺寸就越小。
空间分辨率和采样间隔的关系:
★★对于一个同样大小的景物来说,对其进行采样的空间分辨率越高,采样间隔就越小,景物中的细节越能更好地在数字化后的图像中反映出来,也即反应该景物的图像的质量就越高;反之
显示分辨率是指显示屏上能够显示的数字图像的最大像素行数和最大像素列数,取决于显示器上所能够显示的像素点之间的距离。
同一显示器(或显示分辨率相同的不同显示器)显示的图像大小只与被显示的图像的空间分辨率大小有关,与显示器的显示分辨率无关。换句话说,具有不同空间分辨率的数字图像在同一显示器上的显示分辨率相同。
综上,同一幅图像(或图像空间分辨率相同的不同图像)显示在两个不同显示分辨率的显示器上时,显示的图像的外观尺寸与显示器的显示分辨率有关:显示分辨率越高,显示出的图像的外观尺寸越小;显示分辨率越低,显示出的图像的外观尺寸越大。
灰度级分辨率是指在灰度级别中可分辨的最小变化,通常把灰度级级数L称为图像的灰度级分辨率。随着灰度分辨率的降低,图像的细节信息在逐渐损失,伪轮廓信息在逐渐增加。
function [newimage]=rotate(img,degree)
%获取图片信息 注意三通道获取完 即定义三个变量
[m,n,dep]=size(img);
%计算出旋转之后,形成一个大矩形的长宽 可以看效果图
rm=round(m*abs(cosd(degree))+n*abs(sind(degree)));
rn=round(m*abs(sind(degree))+n*abs(cosd(degree)));
%定义一个新矩阵,三通道的,存储新图片的信息
newimage=zeros(rm,rn,dep);
%坐标变换 分三步
m1=[1,0,0;0,1,0;-0.5*rm,-0.5*rn,1];
m2=[cosd(degree),sind(degree),0;-sind(degree),cosd(degree),0;0,0,1];
m3=[1,0,0;0,1,0;0.5*m,0.5*n,1];
%利用循环,对每一个像素点进行变换
for i=1:rm
for j=1:rn
tem=[i j 1];
tem=tem*m1*m2*m3;
x=tem(1,1);
y=tem(1,2);
x=round(x);
y=round(y);
if(x>0&&x<=m)&&(y>0&&y<=n)
newimage(i,j,:)=img(x,y,:);
end
end
end
end
function A = imscale(B,S) %定义缩放函数,B为源图像,A为目标图像,S为缩放倍数
[r,c] = size(B);
nr= round(r*S); %根据放大倍数乘原行数的结果,取其四舍五入的值作为新的行
nc= round(c*S); %根据放大倍数乘原列数的结果,取其四舍五入的值作为新的列
A = zeros(nr,nc); %用新的行列生成目标图像矩阵
SB = zeros(r+1,c+1); %新建一个矩阵SB,大小在B的基础上行列都加1
%%%%%处理SB边界%%%%%
SB(2:r+1,2:c+1)=B;
SB(2:r+1,1)=B(:,1);
SB(1,2:c+1)=B(1,:);
SB(1,1)=B(1,1);
%%%%%处理SB边界%%%%%
for Ai=1:nr
for Aj=1:nc
Bi=(Ai-1)/S; %求出Ai对应的Bi坐标,Ai是由Bi先缩放S倍,再在竖直方向正向平移1得到
Bj=(Aj-1)/S; %求出Aj对应的Bj坐标,Aj是由Bj先缩放S倍,再在水平方向正向平移1得到
i=fix(Bi); %向零方向取整,求出坐标Bi的整数部分
j=fix(Bj); %向零方向取整,求出坐标Bj的整数部分
u=Bi-i; %求出坐标Bi的小数部分
v=Bj-j; %求出坐标Bj的小数部分
i=i+1; %这是在矩阵SB上计算的,不是在矩阵B上计算的,竖直方向上有平移量,加1对应B上的i值
j=j+1; %这是在矩阵SB上计算的,不是在矩阵B上计算的,水平方向上有平移量,加1对应B上的j值
A(Ai,Aj)=(1-u)*(1-v)*SB(i,j)+u*v*SB(i+1,j+1)+u*(1-v)*SB(i+1,j)+(1-u)*v*SB(i,j+1);%双线性插值法计算A(Ai,Aj)
end
end
end
灰度映射是一种基于图像像素的点操作,可以原地完成。它通过对原始图像中的每一个像素赋予一个新的灰度值来增强图像。具体方法是根据增强的目的设计某种映射规则,并用相应的映射函数来表示。
灰度映射技术的关键是根据增强要求设计映射函数
空域滤波:指利用像素及像素邻域组成的空间进行图像增强的方法。
(1)平滑滤波
能减弱或消除图像中的高频分量,但不影响低频率分量。可用于消除图像中的噪声,提取较大的目标前去除太小的细节或将目标内的小间断连接起来。
(2)锐化滤波
能减弱或消除图像中的低频分量,但不影响高频率分量。可用于增强图像中被模糊的细节或景物的边缘。
最常用的非线性平滑滤波是中值滤波。
中值滤波可用如下步骤完成
(1) 将模板在图中漫游,并将模板中心与图中某个像素位置重合
(2) 读取模板下各对应像素的灰度值
(3) 将这些灰度值从小到大排成一列
(4) 找出这些灰度值里排在中间的一个
(5) 将这个中间值赋给对应模板中心位置的像素
中值滤波让周围像素灰度值相差比较大的像素改取与周围像素灰度值接近的值,既能消除噪声(尤其是脉冲噪声),又能保持图像细节。