早教吧 育儿知识 作业答案 考试题库 百科 知识分享

Matlab数字图像处理,要求详细解释代码,每个函数都要解释.这个是对图像求幅值谱和相位谱,并对其进行重构.>>I=imread('辣椒bmp.bmp');>>figure(1)>>imshow(real(I));>>I=I(:,:,3);???Indexexce

题目详情
Matlab数字图像处理,要求详细解释代码,每个函数都要解释.这个是对图像求幅值谱和相位谱,并对其进行重构.>>I=imread('辣椒bmp.bmp'); >>figure(1) >>imshow(real(I)); >>I=I(:,:,3); ???Indexexceedsmatrixdimensions. >>fftI=fft2(I); >>sfftI=fftshift(fftI); >>RRfdp1=real(sfftI); >>IIfdp1=imag(sfftI); >>a=sqrt(RRfdp1.^2+IIfdp1.^2); >>a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225; >>figure(2) >>imshow(real(a)); >>b=angle(fftI); >>figure(3) >>imshow(real(b));% >>theta=30; >>RR1=a*cos(theta); >>II1=a*sin(theta); >>fftI1=RR1+i.*II1; >>C=ifft2(fftI1)*255; >>figure(4) >>imshow(real(C)); >>MM=150; >>RR2=MM*cos(angle(fftI)); >>II2=MM*sin(angle(fftI)); >>fftI2=RR2+i.*II2; >>D=ifft2(fftI2); >>figure(5) >>imshow(real(D));
▼优质解答
答案和解析
>>I=imread('辣椒bmp.bmp');%从当前目录读取图像 >>figure(1)%创建一个视图,取名1 >>imshow(real(I));%将图像I只取实部(如果是虚数的话),并显示在视图1中 >>I=I(:,:,3);%取图像I的蓝色分量,1为红色,2为绿色,3为蓝色。 ???Indexexceedsmatrixdimensions. >>fftI=fft2(I);%获取2维离散傅里叶变化后的图像,保存到fftI >>sfftI=fftshift(fftI);%将傅里叶变化的中心移到图像中心,保存到sfftI >>RRfdp1=real(sfftI);%取实部 >>IIfdp1=imag(sfftI);%取虚部 >>a=sqrt(RRfdp1.^2+IIfdp1.^2);%取模,即实部于虚部的平方和再开方 >>a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;%灰度拉升,将变换后的图像拉升到0~255区间 >>figure(2)%创建一个视图,取名2 >>imshow(real(a));%将图像a只取实部(如果是虚数的话),并显示在视图2中 >>b=angle(fftI);%取虚数fftI的弧度 >>figure(3)%创建一个视图,取名3 >>imshow(real(b));%将图像b只取实部(如果是虚数的话),并显示在视图3中 >>theta=30;%角度常量 >>RR1=a*cos(theta);%RR1=a*cos(30),注意,这里可能有错误,30度角没有转到弧度,本意可能是cos(theta/180*pi); >>II1=a*sin(theta);%II1=a*sin(30),注意,这里可能有错误,30度角没有转到弧度,本意可能是sin(theta/180*pi); >>fftI1=RR1+i.*II1;%得到的实部RR1和虚部II1组合成虚数fftI1 >>C=ifft2(fftI1)*255;%2维傅里叶反变化后*255保存到C >>figure(4)%创建一个视图,取名4 >>imshow(real(C));%将图像C只取实部(如果是虚数的话),并显示在视图4中 >>MM=150;%常量 >>RR2=MM*cos(angle(fftI));%常量*cos(虚数fftI的弧度) >>II2=MM*sin(angle(fftI));%常量*sin(虚数fftI的弧度) >>fftI2=RR2+i.*II2;%得到新的虚数fftI2 >>D=ifft2(fftI2);%2维傅里叶反变化 >>figure(5)%创建一个视图,取名5 >>imshow(real(D));%将图像D只取实部(如果是虚数的话),并显示在视图5中