您好,欢迎访问三七文档
实验二数字图像变换了解图像的各种变换方法运用matlab实现各种变换一、实验目的二、实验原理由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理。1、傅立叶变换一维傅立叶变换二维傅立叶变换∞∞∞∞+-jωtt-+tωω-F(ω)=f(t)ed1f(t)=F(ω)ejd2π12∞∞-jωm-jωn12m=-∞n=-∞F(ω,ω)=f(m,n)ee是复变函数,周期均为,通常图像在显示时,取值范围为12(,)F212,12121221(,)(,)4jmjnfmnFeedd12,离散傅立叶变换计算机处理傅立叶变换用离散傅立叶变换。输入/输出数据均为离散,便于计算机处理。使用离散傅立叶变换,可以使用一种快速算法(FFT)。MATLAB提供的函数:FFT、FFT2、FFTn例:有一矩形函数f(m,n),矩形区域为1,其余为0,对该矩形作傅立叶变换。clear;N=100;f=zeros(50,50);f(15:35,23:28)=1;subplot(2,1,1)imshow(f)subplot(2,1,2)F=fft2(f);imshow(log(abs(F)))三、实验内容从上幅图像中可以看到,直流成分主要集中在右上角,分辨率比较低。通过fftshift函数提供补零和直流成分显示区域调整后得到调整以后的结果如上图所示。N=100;f=zeros(50,50);f(15:35,23:28)=1;subplot(2,1,1)imshow(f)F=fft2(f,256,256);F2=fftshift(F);subplot(2,1,2)imshow(log(abs(F2)));fftshift函数实现补零操作和改变图象显示象限练习图像的傅立叶变换的旋转性质对正方形图像进行旋转操作,观察原图的傅立叶频谱与旋转后的傅立叶频谱的对应关系。借助极坐标变换,将f(x,y)和F(u,v)转换为经过变换得cos,sin,cos,sinxryruwvw(,),(,)frFw00(,)(,)frFw2、离散余弦变换傅立叶变换存在一个问题,它的参数均为复数,数据描述上相当于实数的两倍,数据的计算量比较大。离散余弦变换较好的解决了这个问题。110011002F(u,v)()()(,)cos[(21)]cos[(21)]222(,)()()(,)cos[(21)]cos[(21)]22MNxyMNuvcucvfxyxuyvNMMNfxycucvfuvxxyyNMMN利用二维离散余弦变换进行图像压缩1.图像压缩的原理对图像进行压缩可以不损失过多的视觉信息,这里主要有三个原因。首先,由于相邻像素之间的相关性,图像包含相当高的空间冗余度。其次,由于图像中不同色彩组成部分的相关性,它也包含一定程度的色谱冗余度。第三,人类视觉系统也造成了某种程度的心理视觉冗余度,从理论的角度来看,应针对图像数据中的冗余信息获得尽可能高的压缩度。典型的图像压缩系统主要由三部分组成:变换部分(Transformer)量化部分(Quatizer)编码部分(Coder)变换部分:它体现了输入原始图像和经过变换的图像之间的一一对应关系。变换也称为去除相关,它减少了图像中的冗余信息,与输入原始图像数据相比,变换后的图像数据提供了一种更易于压缩的图像数据表示形式。量化部分:量化部分把经过变换的图像数据作为输入进行处理后,会得到有限数目的一些符号。一般而言,这一步会带来信息的损失,而这也恰是有损压缩方法和无损压缩方法之间主要的区别。在无损压缩方法中,这一步骤并不存在,这是一个不可逆的过程,原因就在于这是多到一映射,存在有两种量化类型:标量量化与矢量量化,前者是在一个像素、一个像素的基础上量化,而后者对像素向量进行量化。编码部分:这是压缩过程中最后一个步骤。这个部分将经过变换的系数编码为二进制位流,这个部分可以采用固定长编码,或变动长度编码,前者对所有符号赋予等长的编码,而后者则对出现频率较高的符号分配较短的编码,变动长度编码也叫熵(Entropy)编码,它能把经过变换得到的图像系数(Coefficients)数据以较短的信息总长度来表示,因而在实际应用中,多采用此类编码方式。离散余弦变换DCT的MATLAB实现有两种方法:一种是基于图像离散余弦变换的算法,这是通过MATLAB工具箱提供的dct2函数和idct2函数实现的;另一种是DCT变换矩阵方法。变换矩阵方法非常适合做8*8或16*16的图像块的DCT变换,工具箱提供了dctmtx函数来计算变换矩阵。图像离散余弦变换一对图像进行离散余弦变化,观察其余弦变换系数及余弦反变换后恢复图像。图像选取系统提供的cameraman.tifX=imread(‘cameraman.tif’)Imshow(X)I=imread('cameraman.tif');%装入原始图像subplot(3,1,1);imshow(I);J=dct2(I);%对I进行二维DCTsubplot(3,1,2);imshow(log(abs(J)),[]);%图像大部分能量集中在左上角处J(abs(J)10)=0;%将DCT变换值小于10的元素设为0K=idct2(J)/255;%对逆DCT变换值归一化subplot(3,1,3);imshow(K);I=imread('cameraman.tif');%装入原始图像figuresubplot(1,3,1);imshow(I);J=dct2(I);%对I进行二维DCTsubplot(1,3,2);imshow(log(abs(J)),[]);%图像大部分能量集中在左上角处J(abs(J)255)=0;%将DCT变换值小于255的元素设为0K=idct2(J)/255;%对逆DCT变换值归一化subplot(1,3,3);imshow(K);图像的离散余弦变换二由上例我们可以发现离散余弦变换具有很强的“能量集中”特性,而且能量主要集中在左上角处,因此在实际图像应用中,能量不集中的地方可在余弦编码中忽略。处理的方法是,通过对mask矩阵进行变换来实现,即将mask矩阵左上角置1,其余全部置0。然后通过离散余弦反变换后,图像得以恢复。这种处理方法——图像的压缩。图像压缩离散余弦变换是先将整体图像分成N×N像素块,然后对N×N像素块逐一进行离散余弦变换。由于大多数图像的高频分量较小,相应于图像高频分量的系数经常为零,加上人眼对高频成分的失真不太敏感,所以可以用更粗的量化。这样起到压缩图像的目的,使传输的数码率要远远小于实际图像的数码率,接收端通过反变换得到的恢复图像也不会有明显的改变。图像压缩主要任务是取不同的DCT系数,观察即满足不影响图像质量有能达到较大的压缩率。A=imread('aaa.tif');I=rgb2gray(A);trueImage=im2double(I);%转换图像矩阵为双精度型imshow(trueImage);title('原始图像');dctm=dctmtx(8);%计算离散余弦变换imageDCT=blkproc(trueImage,[88],'P1*x*P2',dctm,dctm.');%对图像I的每个不同8*8数据块应用矩阵式’P1*x*P2’进行处理。M10=[1111000011100000110000001000000000000000000000000000000000000000];%二值掩模,用来压缩DCT的系数newImage2=blkproc(imageDCT,[88],'P1*(x.*P2)*P3',dctm',M10,dctm);figure;imshow(newImage2);title('压缩图像M10');A=imread('aaa.tif');I=rgb2gray(A);trueImage=im2double(I);%转换图像矩阵为双精度型imshow(trueImage);title('原始图像');dctm=dctmtx(8);%计算离散余弦变换imageDCT=blkproc(trueImage,[88],'P1*x*P2',dctm,dctm.');%对图像I的每个不同8*8数据块应用矩阵式’P1*x*P2’进行处理。M10=[1111111111111110111111001111100011110000111000001100000010000000];%二值掩模,用来压缩DCT的系数newImage2=blkproc(imageDCT,[88],'P1*(x.*P2)*P3',dctm',M10,dctm);figure;imshow(newImage2);title('压缩图像M10');四、实验报告简述实验目的、原理选取图像进行图像压缩处理分析实验结果,比较压缩前后图像的大小
本文标题:实验二数字图像变换
链接地址:https://www.777doc.com/doc-3390141 .html