空间域处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
空间域图像处理主要分为灰度变换和空间滤波两类。灰度变换在像素上操作,主要以改变对比度和阈值处理为目的。空间滤波涉及改善性能的操作,如对每一个像素的领域处理来平滑或锐化图像。
本章的基本处理模型个g(x,y)=T[f(x,y)],f是输入图像,g是处理后的图像,T是点(x,y)的邻域上定义的关于f的一种算子。
灰度变换
1、图像反转
2、对数变换
3、幂律(伽马)变换
4、分段线性变换函数
Imadjust灰度图像进行亮度变换的基本IPT工具,语法g=imadjust(f,[low_in high_in],[low_out high_out],gamma)
参数说明:
输入图像应为uint8,uint16,double类图像,输出图像与输入图像有相同的类。除图像f外,函数的所有输入输出均指定在0和1之间,而不论图像f的类。
[low_in high_in]或[low_out high_out]使用空矩阵([])会得到默认值[01].
具体应用见IP48的例子
Intrans是负片,对数,伽马,对比度拉伸的集成函数。
5、直方图均衡(重点)库函数程序IP59.m
空间滤波
(一)平滑空间滤波器
平滑滤波器用于模糊处理和降低噪声,因此常用于预处理的任务中,常称为均值滤波器。
1、平滑线性滤波器
2、统计排序(非线性)滤波器
库函数ordfilt2(f,order,domain)
(i)最小值
(ii)最大值
(iii)中值
3、图像处理工具箱的介绍
Fspecial用来生成滤波掩模的W的函数见程序test_fspecial.m
clear all;
close all;
clc;
w_average=fspecial('average',[33]);%矩形平均滤波器w_disk=fspecial('disk',4);%圆形平均滤波器w_gaussian=fspecial('gaussian',[33],0.5);%高斯滤波器
%8-23行代码是库函数fspecial中生成高斯滤波掩模的具体代码
p2=[33];
p3=0.5;
siz=(p2-1)/2;
std=p3;%标准差
[x,y]=meshgrid(-siz(2):siz(2),-siz(1):siz(1));
arg=-(x.*x+y.*y)/(2*std*std);
h=exp(arg);%在此之前都是严格按照p93页的公式计算的
%下面的代码将上述生成的作h/sum(h(:))
h(h sumh=sum(h(:)); if sumh~=0, h=h/sumh; end; w_laplacian=fspecial('laplacian',0.5);%大小为3*3的拉普拉斯滤波器 w_log=fspecial('log',[55],0.5);%大小为5*5,标准差为0.5的高斯——拉普拉斯滤波器 %%27-43行代码是库函数fspecial中生成高斯——拉普拉斯滤波掩模的具体代码.参照P460的公式 %first calculate Gaussian p2=[55]; p3=0.5; siz=(p2-1)/2; std2=p3^2; [x,y]=meshgrid(-siz(2):siz(2),-siz(1):siz(1)); arg=-(x.*x+y.*y)/(2*std2); h=exp(arg); h(h sumh=sum(h(:)); if sumh~=0, h=h/sumh; end; %now calculate Laplacian h1=h.*(x.*x+y.*y-2*std2)/(std2^2); h=h1-sum(h1(:))/prod(p2);%make the filter sum to zero,sum(h)->0; (二)锐化空间滤波器 1、关于一阶二阶微分的分析(P98) 2、二阶微分图像锐化——拉普拉斯算子 close all; clear all; clc; f=imread('Fig0338(a)(blurry_moon).tif'); figure,imshow(f); 原图 w=fspecial('laplacian',0); g1=imfilter(f,w,'replicate'); figure,imshow(g1,[]); 结果分析:上图的所有像素值都为正,。由于滤波器的中心为负数,所以我们希望得到带负值的拉普拉斯图像。上面的代码中,输入计算的图像为uint8类,使用imfilter滤波后的输出图像将会转化为与输入 图像相同的类,所有负值被剪掉为0.所以可以再滤波前将输入图像转化为double类。代码如下 f=im2double(f); w=fspecial('laplacian',0); g2=imfilter(f,w,'replicate'); figure,imshow(g2,[]); g=f-g2;%相减恢复失去的色调 figure,imshow(g);