MATLAB实验三:图像变换
- 格式:docx
- 大小:944.69 KB
- 文档页数:4
《数字图像处理实验报告》实验一图像的增强一.实验目的1.熟悉图像在MATLAB下的读写、输出;2.熟悉直方图;3.熟悉图像的线性指数等;4.熟悉图像的算术运算和几何变换。
二.实验仪器计算机、MATLAB软件三.实验原理图像增强是指根据特定的需要突出图像中的重要信息,同时减弱或去除不需要的信息。
从不同的途径获取的图像,通过进行适当的增强处理,可以将原本模糊不清甚至根本无法分辨的原始图像处理成清晰的富含大量有用信息的可使用图像。
其基本原理是:对一幅图像的灰度直方图,经过一定的变换之后,使其成为均匀或基本均匀的,即使得分布在每一个灰度等级上的像素个数.f=H等或基本相等。
此方法是典刑的图像空间域技术处理,但是由于灰度直方图只是近似的概率密度函数,因此,当用离散的灰度等级做变换时,很难得到完全平坦均匀的结果。
频率域增强技术频率域增强是首先将图像从空间与变换到频域,然后进行各种各样的处理,再将所得到的结果进行反变换,从而达到图像处理的目的。
常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。
假定原图像为f(x,y),经傅立叶变换为F(u,v)。
频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像。
四.实验内容及步骤1.图像在MATLAB下的读写、输出;实验过程:>> I = imread('F:\image\624baf9dbcc4910a.jpg');figure;imshow(I);title('Original Image');text(size(I,2),size(I,1)+15, ...'IMG_20170929_130307.jpg', ...'FontSize',7,'HorizontalAlignment','right');Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86In imshow at 196Original Image2.给定函数的累积直方图。
图像变换实验报告实验三图像变换⼀、实验⽬的1、结合实例学习⼏种常见的图像变换,并通过实验体会图像变换的效果;2、理解和掌握图像旋转、缩放、离散傅⾥叶变换和离散余弦变换的原理和应⽤,掌握利⽤MATLAB编程实现图像变换的⽅法。
⼆、实验内容1、图像的⼏何变换,主要实现图像的缩放与旋转,要求变换中⽤最近邻插值算法实现,或⽤双线性变换法实现并⽐较;2、图像的正交变换,主要实现离散傅⾥叶变换(DFT)与离散余弦变换(DCT)。
三、实验要求1、独⽴完成;2、编写MATLAB程序,并对程序中所调⽤函数的功能进⾏必要的说明(可⽤“help 函数名”进⾏查询);3、调试运⾏后保存实验结果(注意保存的⽂件格式);4、完成实验报告。
四、实验原理(⼀)图像的⼏何运算(变换)1、⽐例缩放⽐例缩放是指将给定的图像在x轴⽅向按⽐例缩放fx倍,在y轴⽅向按⽐例缩放fy倍,从⽽获得⼀副新的图像。
在MATLAB中,进⾏图像⽐例缩放的函数是imresize,它的常见调⽤⽅法如下:B=imresize(A,scale)B=imresize(A,[mrows ncols])B=imresize(A,scale,method)其中,A是要进⾏缩放的图像矩阵,scale是进⾏缩放的倍数,如果scale⼩于1,则进⾏缩⼩操作,如果scale⼤于1,则进⾏放⼤操作。
[mrows ncols]⽤于指定缩放后图像的⾏数和列数,method ⽤于指定的图像插值⽅法,有nearest、bilinear、bicubic 等算法。
2、图像旋转⼀般的旋转是以图像的中⼼为原点,将图像上的所有像素都旋转⼀个相同的⾓度。
在MATLAB中,进⾏图像旋转的函数是imrotate,它的常见调⽤⽅法如下:B=imrotate(A,angle)B=imrotate(A,angle,method)B=imrotate(A,angle,method,bbox)其中,A是要旋转的图像,angle是旋转的⾓度;method是插值⽅法,可以为nearest、bilinear、bicublic等;bbox是指旋转后的显⽰⽅式,有两种选择,⼀种是crop,旋转后的图像效果跟原图像⼀样⼤⼩,⼀种是loose,旋转后的图像包含原图。
图像的变换1. 离散傅立叶变换的Matlab 实现Matlab 函数fft、fft2 和fftn 分别可以实现一维、二维和N 维DFT 算法;而函数ifft、ifft2 和ifftn 则用来计算反DFT 。
这些函数的调用格式如下:A=fft(X,N,DIM)其中,X 表示输入图像;N 表示采样间隔点,如果X 小于该数值,那么Matlab 将会对X 进行零填充,否则将进行截取,使之长度为N ;DIM 表示要进行离散傅立叶变换。
A=fft2(X,MROWS,NCOLS)其中,MROWS 和NCOLS 指定对X 进行零填充后的X 大小。
A=fftn(X,SIZE)其中,SIZE 是一个向量,它们每一个元素都将指定X 相应维进行零填充后的长度。
函数ifft、ifft2 和ifftn的调用格式于对应的离散傅立叶变换函数一致。
例子:图像的二维傅立叶频谱% 读入原始图像I=imread('lena.bmp');imshow(I)% 求离散傅立叶频谱J=fftshift(fft2(I));figure;imshow(log(abs(J)),[8,10])2. 离散余弦变换的Matlab 实现2.1. dCT2 函数功能:二维DCT 变换格式:B=dct2(A)B=dct2(A,m,n)B=dct2(A,[m,n])说明:B=dct2(A) 计算 A 的DCT 变换 B ,A 与 B 的大小相同;B=dct2(A,m,n) 和B=dct2(A,[m,n]) 通过对A 补0 或剪裁,使B 的大小为m×n。
2.2. dict2 函数功能:DCT 反变换格式:B=idct2(A)B=idct2(A,m,n)B=idct2(A,[m,n])说明:B=idct2(A) 计算 A 的DCT 反变换B ,A 与 B 的大小相同;B=idct2(A,m,n) 和B=idct2(A,[m,n]) 通过对A 补0 或剪裁,使B的大小为m×n。
1:灰度变换:%matlab软件中,imadjust函数可以实现图像的灰度变换,用matlab语言编写的灰度变换例程如下所示:%GRAY TRANSFORMclc;I=imread('C:/Documents and Settings/Administrator/桌面/cameraman.bmp');imshow(I);J=imadjust(I,[0.3 0.7],[0 1],1);%transform the values in the intensity images I to values in J linealy mapping values between 0.3 and 0.7 to values between 0 and 1figure;imshow(J);J=imadjust(I,[0.3 0.7],[0 1],0.5);%if gamma is less than 1,the mapping is weighted toward highter (brighter) output values;figure;imshow(J);J=imadjust(I,[0.3 0.7],[0 1],1.5);%if gamma is greater than 1,the mapping is weighted toward lower (darker) output values;figure;imshow(J);%Gradient Sharpenclc;[I,map]=imread('C:/Documents and Settings/Administrator/桌面/cameraman.bmp');imshow(I,map);I=double(I);[IX,IY]=gradient(I);%return the numerical gradient of the matrix F ,FX corresponds to dF/dx,the differences in the x column direction ,FY corresponds to dF/dy ,the differences in the y(row ) directions.GM=sqrt(IX.*IX+IY.*IY);OUT1=GM;figure;imshow(OUT1,map);OUT2=I;J=find(GM>=10);OUT2(J)=GM(J);figure;imshow(OUT2,map);OUT3=I;J=find(GM>=10); OUT3(J)=255; figure;imshow(OUT3,map); OUT4=I;J=find(GM<=10); OUT4(J)=255; figure;imshow(OUT4,map); OUT5=I;J=find(GM>=10); OUT5(J)=255;Q=find(GM<10); OUT5(Q)=0; figure;imshow(OUT5,map);。
实验报告课程名称医学图像处理实验名称图像变换专业班级姓名学号实验日期实验地点2015—2016学年度第 2 学期图1 原图像图2 灰度变换后的图像分析:图像的灰度变换处理是图像增强处理技术中基础的空间域图像处理方法。
灰度灰度变换是指根据某种目标条件按照一定变换关系逐点改变原图像中每个像素灰度值的方法。
灰度变换法又可分为三种:线性、分段线性及非线性变换。
目的是为了改善画质,使图像的显示效果更加清晰。
2直方图均衡化I=imread('skull.tif'); %读取图像J=histeq(I); %指定直方图均匀化后的灰度级数n,默认值为64 imshow(I); %显示原图像title('原图像'); %图像标题为‘原图像’图3 原图像 图4 直方图均衡化所得图像 分析:直方图均衡化后的图像在整个灰度值动态变化范围内分布均匀化,改善了原图像的亮度分布状态,增强图像的视觉效果。
它是非线性灰度变换。
1.522.53x 105原图像直方图010020001.522.53x 105均衡化变换后的直方图0100200050100150200250图6直方图规定化所得图像分析:直方图规定化就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。
直方图规定化变换后是亮图像的直方图。
直方图的低端已右移向灰度级的较亮区域4利用matlab软件实现数字图像傅里叶变换I=imread('skull.tif'); %imshow(I); %fftI=fft2(I); %sfftI=fftshift(fftI); %RR=real(sfftI); %II=imag(sfftI); %图8 原图像图9 归一化后的图像分析:利用matlab软件实现数字图像傅里叶变换。
二维离散傅立叶变换将傅里叶变化的中心为。
《数字图像处理》实验报告学院:专业:班级:姓名:学号:实验一实验名称:图像增强实验目的:1.熟悉图像在Matlab下的读入,输出及显示;2.熟悉直方图均衡化;3.熟悉图像的线性指数等;4.熟悉图像的算术运算及几何变换.实验仪器:计算机,Matlab软件实验原理:图像增强是为了使受到噪声等污染图像在视觉感知或某种准则下尽量的恢复到原始图像的水平之外,还需要有目的性地加强图像中的某些信息而抑制另一些信息,以便更好地利用图像。
图像增强分频域处理和空间域处理,这里主要用空间域的方法进行增强。
空间域的增强主要有:灰度变换和图像的空间滤波。
图像的直方图实际上就是图像的各像素点强度概率密度分布图,是一幅图像所有像素集合的最基本统计规律,均衡化是指在每个灰度级上都有相同的像素点过程。
实验内容如下:I=imread('E:\cs.jpg');%读取图像subplot(2,2,1),imshow(I),title('源图像')J=rgb2gray(I)%灰度处理subplot(2,2,2),imshow(J) %输出图像title('灰度图像') %在原始图像中加标题subplot(2,2,3),imhist(J) %输出原图直方图title('原始图像直方图')0100200几何运算:I=imread('E:\cs.jpg');%subplot(1,2,1),imshow(I); theta = 30;K = imrotate(I,theta); subplot(1,2,2),imshow(K)对数运算:I=imread('E:\dog.jpg');subplot(2,2,1),imshow(I),title('源图像') J=rgb2gray(I)%灰度处理subplot(2,2,2),imshow(J),title('灰度变换后图像') J1=log(1+double(J));subplot(2,2,3),imshow(J1,[]),title('对数变换后') 指数运算:I=imread('E:\dog.jpg'); f=double(I); g=(2^2*(f-1))-1 f=uint8(f); g=uint8(g);subplot(1,2,1);subimage(f),title('变换一') subplot(1,2,2);subimage(g),title('变换二')加法运算:clc;clear all;close all; i = imread('E:\dog.jpg');j = imnoise(i,'gaussian',0,0.02);subplot(1,3,1),imshow(i),title('图一') subplot(1,3,2),imshow(j),title('图二') k=zeros(242,308); for p=1:100j = imnoise(i,'gaussian',0,0.02); j1 = im2double(j); k = k + j1; end k=k/100;subplot(1,3,3),imshow(k),title('图三')变换一200400600100200300400500变换二200400600100200300400500实验二实验名称:图像变换实验目的:(1)进一步对matlab的了解和使用;(2)学习如何在matlab中对数字图像的处理;实验原理:图像和其他信号一样,既能在空间域处理,也能在频率域处理。
《数字图像处理》课程实验报告实验名1:图像的正交变换实验院系:自动化测试与控制系班级:1201132姓名:李丹阳学号:1120110113哈尔滨工业大学电气工程及自动化学院光电信息工程2015年12月13日一、实验原理二、实验内容三、实验结果与分析1、傅立叶变换A)绘制一个二值图像矩阵,并将其傅立叶函数可视化。
(傅里叶变换A)的实验结果B)利用傅立叶变换分析两幅图像的相关性,定位图像特征。
读入图像‘cameraman.tif’,抽取其中的字母‘a’。
(傅里叶变换B )的实验结果离散余弦变换(DCT)使用dct2对图像‘linyichen.jpg ’进行DCT变换。
-505(离散余弦变换A )的实验结果将上述DCT 变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并与原图像比较。
离散余弦变换附主要程序代码:f=zeros(30,30);f(5:24,13:17)=1;imshow(f,'notruesize')F=fft2(f);F2=log(abs(F));figure,imshow(F2,[-15],'notruesize');colormap(jet);F=fft2(f,256,256);figure,imshow(log(abs(F)),[-15],'notruesize');colormap(jet);F2=fftshift(F);figure,imshow(log(abs(F2)),[-15],'notruesize');colormap(jet);B)利用傅立叶变换分析两幅图像的相关性,定位图像特征。
读入图像‘cameraman.tif’,抽取其中的字母‘a’。
bw=imread('cameraman.tif');a=bw(59:71,81:91);imshow(bw);figure,imshow(a);C=real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256)));%求相关性figure,imshow(C,[]);thresh=max(C(:));figure,imshow(C>thresh-10)figure,imshow(C>thresh-15)1.离散余弦变换(DCT)A)使用dct2对图像‘linyichen.jpg’进行DCT变换。
傅立叶级数变换:>> i=zeros(35,35);>> f(5:24,13:17)=1;>> f=fft2(f,256,256);>> f2=log(abs(f));Warning: Log of zero.>> imshow(f2,[-1,5],'notruesize');>> colormap(jet);>> colorbar;>> i=zeros(256,256);>> i(124:132,120:136)=1;>> subplot(1,3,1);imshow(i);>> i=im2double(i);>> f1=fft2(i);>> subplot(1,3,2);imshow(log(1+abs(f1)),[]); >> fc1=fftshift(f1);>> subplot(1,3,3);imshow(fc1);Warning: Displaying real part of complex input > In imshow>ValidateCdata at 497In imshow>ParseInputs at 378In imshow at 85>> i1=imread('rice.png');>> i1=im2double(i1);>> f1=fft2(i1);>> fc1=fftshift(f1);>> subplot(1,2,1);imshow(i1);>> subplot(1,2,2);imshow(log(1+abs(fc1)));求线性滤波器的频率响应:>> h=fspecial('gaussian');>> freqz2(h);>> f=zeros(1000,1000);>> f(350:649,475:524)=1;>> subplot(2,2,1);imshow(f,'notruesize');>> subplot(2,2,2);f=fftshift(abs(fft2(f)));>> imshow(f,[-1,5],'notruesize');>> f=zeros(1000,1000);>> f(350:649,475:524)=1;>> f=imrotate(f,45,'bilinear','crop');>> subplot(2,2,3);imshow(f,'notruesize');>> f=fftshift(abs(fft2(f)));>> subplot(2,2,4);imshow(f,[-1,5],'notruesize');>> a=magic(3);>> b=ones(3);>> a(8,8)=0;>> b(8,8)=0;>> c=fft2(a).*fft2(b);>> d=ifft2(c);>> d=d(1:5,1:5);>> d=real(d)d =8.0000 9.0000 15.0000 7.0000 6.000011.0000 17.0000 30.0000 19.0000 13.000015.0000 30.0000 45.0000 30.0000 15.00007.0000 21.0000 30.0000 23.0000 9.00004.0000 13.0000 15.0000 11.0000 2.0000 离散余弦变换:>> rgb=imread('autumn.tif');>> i=rgb2gray(rgb);>> j=dct2(i);>> subplot(1,2,1);imshow(rgb);>> subplot(1,2,2);imshow(log(abs(j)),[]);>> colormap(jet(64));colorbar;>> rgb=imread('autumn.tif');>> i=rgb2gray(rgb);>> j=dct2(i);>> subplot(1,2,1);imshow(rgb);>> subplot(1,2,2);imshow(log(abs(j)),[]); >> colormap(jet(64));colorbar;>> clear;>> rgb=imread('autumn.tif');>> i=rgb2gray(rgb);>> j=dct2(i);>> subplot(1,2,1);imshow(rgb);>> j(abs(j)<10)=0;>> k=idct2(j);>> subplot(1,2,2);imshow(k,[0,255]);>> i=imread('rice.png');>> a=im2double(i);>> subplot(1,2,1);imshow(a);>> d=dctmtx(size(a,1));>> dct=d*a*d';>> subplot(1,2,2);imshow(dct);Walsh--Hadamard变换:>> sq=[1,1,3,1;2,1,2,2];>> for k=1:4wht(:,k)=hadamard(2)*sq(:,k)/2;end;>> wht;>> for j=1:2;a=wht(j,:)';hadamard(4);wh(:,j)=hadamard(4)*wht(j,:)'/4;end;>> wht;>> wh=wh'wh =1.6250 0.3750 -0.3750 -0.1250-0.1250 0.1250 -0.1250 -0.3750 >> i=imread('cameraman.tif');>> h=hadamard(256);>> i=double(i)/256;>> hi=h*i*h;>> hi=hi/256;>> subplot(1,3,1);imshow(i);>> subplot(1,3,2);imshow(hi);>> ci=dct2(i);>> subplot(1,3,3);imshow(ci);Radon变换:>> iptsetpref('ImshowAxesVisible','on'); >> i=zeros(100,100);>> i(25:75,25:75)=1;>> th=0:180;>> [r,xp]=radon(i,th);>> imshow(r,[]);>> colormap(hot);colorbar;>> i=fitsread('solarspectra.fts');>> i=mat2gray(i);>> bw=edge(i);>> subplot(1,2,1);imshow(i);>> subplot(1,2,2);imshow(bw);Radon逆变换:>> p=phantom(256);>> imshow(p);>> th1=0:10:170;[r1,xp]=radon(p,th1); >> th2=0:10:170;[r2,xp]=radon(p,th2); >> th3=0:10:170;[r3,xp]=radon(p,th3); >> figure,imagesc(th3,xp,r3);>> colormap(hot);colorbar;>> figure;i1=iradon(r1,10);>> i2=iradon(r2,5);>> i3=iradon(r3,2);>> subplot(1,3,1);imshow(i1);>> subplot(1,3,2);imshow(i2);>> subplot(1,3,3);imshow(i3);Fan-Beam变换:>> iptsetpref('ImshowAxesVisible','on'); >> ph=phantom(128);>> subplot(1,2,1);imshow(ph);>> [f,fpos,fangles]=fanbeam(ph,250);>> subplot(1,2,2);imshow(f,[]);>> axis normal;>> colormap(hot);colorbar;。
《数字图像处理》实验报告学院:专业:班级:姓名:学号:实验一实验名称:图像增强实验目的:1.熟悉图像在Matlab下的读入,输出及显示;2.熟悉直方图均衡化;3.熟悉图像的线性指数等;4.熟悉图像的算术运算及几何变换.实验仪器:计算机,Matlab软件实验原理:图像增强是为了使受到噪声等污染图像在视觉感知或某种准则下尽量的恢复到原始图像的水平之外,还需要有目的性地加强图像中的某些信息而抑制另一些信息,以便更好地利用图像。
图像增强分频域处理和空间域处理,这里主要用空间域的方法进行增强。
空间域的增强主要有:灰度变换和图像的空间滤波。
图像的直方图实际上就是图像的各像素点强度概率密度分布图,是一幅图像所有像素集合的最基本统计规律,均衡化是指在每个灰度级上都有相同的像素点过程。
实验内容如下:I=imread('E:\cs.jpg');%读取图像subplot(2,2,1),imshow(I),title('源图像')J=rgb2gray(I)%灰度处理subplot(2,2,2),imshow(J) %输出图像title('灰度图像') %在原始图像中加标题subplot(2,2,3),imhist(J) %输出原图直方图title('原始图像直方图')0100200subplot(1,2,2),imshow(K)对数运算:I=imread('E:\dog.jpg');subplot(2,2,1),imshow(I),title('源图像')J=rgb2gray(I)%灰度处理subplot(2,2,2),imshow(J),title('灰度变换后图像') J1=log(1+double(J));subplot(2,2,3),imshow(J1,[]),title('对数变换后')指数运算:I=imread('E:\dog.jpg');f=double(I);g=(2^2*(f-1))-1f=uint8(f);g=uint8(g);subplot(1,2,1);subimage(f),title('变换一') subplot(1,2,2);subimage(g),title('变换二')100 200 300100 200 300加法运算:clc;clear all;close all;i = imread('E:\dog.jpg');j = imnoise(i,'gaussian',0,0.02); subplot(1,3,1),imshow(i),title('图一') subplot(1,3,2),imshow(j),title('图二') k=zeros(242,308);for p=1:100j = imnoise(i,'gaussian',0,0.02);j1 = im2double(j);k = k + j1;endk=k/100;subplot(1,3,3),imshow(k),title('图三')实验二实验名称:图像变换实验目的:(1)进一步对matlab的了解和使用;(2)学习如何在matlab中对数字图像的处理;实验原理:图像和其他信号一样,既能在空间域处理,也能在频率域处理。