b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

通用解决方案:数字图像处理实验-MATLAB程序代码

电脑杂谈  发布时间:2020-11-17 22:00:54  来源:网络整理

数字图像处理 matlab 实验_matlab数字图像处理实验_matlab数字图像处理实验

昨天,我匆忙完成了数字图像处理的实验报告,并整理了一些文档。今天,我附加了相关代码,只写了实验要求,然后附加了代码和运行结果图。

实验1的要求

编写程序add.m,subtract.m,immultiply.m文件,分别实现两个图像的加,减,乘

从矩阵的角度编写程序,以添加图像以获得混合图像,然后减去混合图像和背景图像。

编写程序以实现图像的部分显示

使用子图功能实现多幅图像的显示(已在我的代码中应用)

matlab数字图像处理实验

这是实验的原始图片,尺寸为500×500方形图片

matlab数字图像处理实验

这是原始图片的第二个实验,尺寸为500×500平方,请注意,尝试选择一张正方形图片,否则会发生错误,程序将无法运行

%此为加运算
clear all;
I=imread('1.jpg');
J=imread('2.jpg');
K=imadd(I,J);
subplot(1,3,1);
imshow(I);
subplot(1,3,2);
imshow(J);
subplot(1,3,3);
imshow(K);
%此为减运算
clear all;
I=imread('1.jpg');
J=imread('2.jpg');
K=imsubtract(I,J);
subplot(1,3,1);
imshow(I);
subplot(1,3,2);
imshow(J);
subplot(1,3,3);
imshow(K);
%此为乘运算
clear all;
I=imread('1.jpg');
J=imread('2.jpg');
I1=double(I);
J1=double(J);
K=immultiply(I1,J1);
subplot(1,3,1);
imshow(I);
subplot(1,3,2);
imshow(J);
subplot(1,3,3);
imshow(K);
%此为除运算(在要求中没有)
I=imread('1.jpg');
J=imread('2.jpg');
K=imdivide(I,J);
subplot(1,3,1);
imshow(I);
subplot(1,3,2);
imshow(J);
subplot(1,3,3);
imshow(K);

建议:我个人建议在编写MATLAB程序代码时,尝试在其前面添加所有内容;以下是实验效果图

数字图像处理 matlab 实验_matlab数字图像处理实验_matlab数字图像处理实验

matlab数字图像处理实验

这是加法运算的结果,前两个是原始图像,第三个是结果

matlab数字图像处理实验

这是减法运算的结果,前两个是原始图像,第三个是结果

matlab数字图像处理实验

这是乘法运算的结果,前两个是原始图像,第三个是结果

matlab数字图像处理实验

这是分割操作的结果,前两个是原始图像,第三个是结果

%从矩阵的角度编写程序实现图像的加法运算得到混合图像,然后将混合图像与背景图像做减法运算。
clear all;
I=imread('1.jpg');
J=imread('2.jpg');
I1=double(I);
J1=double(J);
K=imadd(I,J);
L=imsubtract(K,I);
subplot(2,2,1);
imshow(I),title('原图1');
subplot(2,2,2);
imshow(J),title('原图2');
subplot(2,2,3);
imshow(K),title('相加的混合图像');
subplot(2,2,4);
imshow(L),title('混合图像减去背景');

matlab数字图像处理实验

matlab数字图像处理实验

上图是实验一和第二题的实验图

matlab数字图像处理实验_matlab数字图像处理实验_数字图像处理 matlab 实验

%实现图像的局部显示
clear all;
I=imread('1.jpg');
J=rgb2gray(I);
K=im2double(J);
subplot(1,2,1),imshow(K),title('原图灰度图像');
B=zeros(500,500);%注意,此处500,500是你的图片的大小
B(60:200,60:200)=1;
Q=immultiply(K,B);
subplot(1,2,2);imshow(Q),title('局部显示');

matlab数字图像处理实验

实验2的要求:[在此实验中,图片仍是实验1中的原始图像1.JPG,2.JPG,以下实验同样适用]

(1)查找原始图像的傅立叶光谱(2)旋转原始图像,例如90度(3)查找旋转图像的傅立叶光谱(4)显示光谱图像([ 1)将真彩像转换为灰度图像(2)计算二维DCT转换(3)显示并观察转换后的图像(4)将转换矩阵中小于10的值替换为0,然后使用余弦逆变换构造图像。(5)显示构造图像

%频谱
clear all;
I=imread('1.jpg');
subplot(1,3,1);
imshow(I);
title('原图');
I=rgb2gray(I);
fftI=fft2(I);
sfftI=fftshift(fftI);
 rr=real(sfftI);
ii=imag(sfftI);
 A=sqrt(rr.^2+ii.^2);
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*255;
subplot(1,3,2);
imshow(A);
title('频谱');
 J=imrotate(I,90);
 fftJ=fft2(J);
 sfftJ=fftshift(fftJ);
  rr=real(sfftJ);
  ii=imag(sfftJ);
  B=sqrt(rr.^2+ii.^2);
 B=(B-min(min(B)))/(max(max(B))-min(min(B)))*255;
subplot(1,3,3);
imshow(B);
title('翻转90度频谱');

matlab数字图像处理实验

%DCT变换
clear all;
I=imread('1.jpg');
I1=rgb2gray(I);
subplot(1,3,1),imshow(I1),title('原灰度图');
I2=dct2(I1);
subplot(1,3,2),imshow(I2),title('dct变换');
I2(abs(I2)<10)=0;
K=idct2(I2)/255;
subplot(1,3,3),imshow(K),title('重构图');

matlab数字图像处理实验

实验三个要求:

读取图像并使用imadjust函数将图像转换为灰度并显示

将图像转换为双倍类型,并对其进行规范化

找到图像s = c log(r +1)的对数变换并将其显示

matlab数字图像处理实验_数字图像处理 matlab 实验_matlab数字图像处理实验

反转原始图像并显示反转的图像

以0.4阈值对原始图像进行二值化处理并显示

clear all;
I=imread('1.jpg');
I=imresize(I,[500,500]);
I=rgb2gray(I);
subplot(2,3,1);
imshow(I),title('原图灰度图');
k=imadjust(I,[0.5 0.9],[0 1]);
subplot(2,3,2);
imshow(k),title('imadjust函数灰度变换后灰度图');
I1=im2double(I);
S=2*log(1+(I1));
subplot(2,3,3);
imshow(S),title('经过对数变换后的图像');
m=imadjust(I,[0 1],[1 0]);
subplot(2,3,4);
imshow(m),title('灰度倒置后的图像');
q=im2bw(I,0.4);
subplot(2,3,6);
imshow(q),title('二值化处理的图像,阈值为0.4');

matlab数字图像处理实验

matlab数字图像处理实验

实验四的要求:

选择一个图像,添加盐和胡椒噪声,分别使用均值滤波器和中值滤波器进行平滑,将滤波效果与具有高斯噪声的图像进行比较,使用巴特沃思低通,指数低通和梯形低通处理图片。选择一张图像,然后使用sobel运算符,prewitt运算符和Laplacian来锐化图像

I=imread('2.jpg'); 
I=rgb2gray(I);
subplot(2,3,1);
imshow(I),title('原图灰度图像');%原图的灰度图像
J=imnoise(I,'salt & pepper',0.04); 
subplot(2,3,2);
imshow(J),title('椒盐噪声图像');%加了噪声的图像
J1=double(J)/255;
h1=[1/9 1/9 1/9;1/9 1/9 1/9;1/9 1/9 1/9];%领域运算
I1=conv2(J1,h1,'same');
subplot(2,3,3);
imshow(I1),title('均值滤波图像');%均值滤波图像
I2= medfilt2(J1,[5,5]);%进行二维3*3中值滤波
subplot(2,3,4);
imshow(I),title('原图灰度图像');%原图的灰度图像
subplot(2,3,5);
imshow(J),title('椒盐噪声图像');%加了噪声的图像
subplot(2,3,6);
imshow(I2),title('中值滤波图像');     

matlab数字图像处理实验

matlab数字图像处理实验

I=imread('2.jpg');   
I=rgb2gray(I);
subplot(1,3,1);
imshow(I),title('原图灰度图像');
J=imnoise(I,'gaussian',0.02);     
subplot(1,3,2);
imshow(J),title('加高斯噪声图像'); 
F=double(J);
G=fft2(F);                    % 傅立叶变换
G=fftshift(G);                 % 把快速傅里叶变换的DC组件移到光谱中心
[M,N]=size(I);
js=2;                       % 二阶
d0=50;                      %截止频率为30
m=fix(M/2); 
n=fix(N/2);
for i=1:M
       for j=1:N
           d=sqrt((i-m)^2+(j-n)^2);
           h=1/(1+0.414*(d/d0)^(2*js));         % 低通滤波器传递函数
           g(i,j)=h*G(i,j);
       end
end
%g=h.*G;
result=ifftshift(g);
Y2=ifft2(result);
Y3=uint8(real(Y2));
subplot(1,3,3);
imshow(Y3),title('巴特沃斯低通滤波')

matlab数字图像处理实验

数字图像处理 matlab 实验_matlab数字图像处理实验_matlab数字图像处理实验

clear all;
I=imread('2.jpg');   
I=rgb2gray(I);
subplot(1,3,1);
imshow(I),title('原图灰度图像');
J2=imnoise(I,'gaussian',0.02);  
subplot(1,3,2);
imshow(J2),title('加高斯噪声图像');                
F=double(J2);
G=fft2(F);                    % 傅立叶变换
G=fftshift(G);                 % 把快速傅里叶变换的DC组件移到光谱中心
[M,N]=size(G);
js=2;                       % 二阶指数低通滤波器
d0=50;                      %截止频率为30
m=fix(M/2);
n=fix(N/2);
for i=1:M
       for j=1:N
           D=sqrt((i-m)^2+(j-n)^2);
           h1(i,j)=exp(log(1/sqrt(2))*(D/d0)^js);
       end
end
g=h1.*G;
result=ifftshift(g);
Y2=ifft2(result);
Y3=uint8(real(Y2));
subplot(1,3,3);
imshow(Y3),title('指数低通滤波')

matlab数字图像处理实验

I=imread('2.jpg');   %读原图
I=rgb2gray(I);
subplot(1,3,1);
imshow(I),title('原图灰度图像');
J2=imnoise(I,'gaussian',0.02);       %加均值为0,方差为0.02的高斯噪声。
subplot(1,3,2);
imshow(J2),title('加高斯噪声图像');   %显示有高斯噪声图像
F=double(J2);
G=fft2(F);                     % 傅立叶变换
G=fftshift(G);                 % 转换数据矩阵
[M,N]=size(G);
d0=200;                    
d1=100;
m=fix(M/2); n=fix(N/2);
for i=1:M
       for j=1:N
           D=sqrt((i-m)^2+(j-n)^2);
           h(i,j)=double(D

matlab数字图像处理实验

%锐化
i = imread('2.jpg');
I=rgb2gray(i);
subplot(2,2,1),imshow(I),title('原图灰度图像');
I=double(I);
H1=fspecial('sobel');
I1=filter2(H1,I);
subplot(2,2,2),imshow(I1),title('sobel算子锐化');
H2=fspecial('prewitt');
I1=filter2(H2,I);
subplot(2,2,3),imshow(I1),title('prewitt算子锐化');
h=[0 1 0,1 -4 1,0 1 0];
J=conv2(I,h,'same');
K=I-J;
subplot(2,2,4),imshow(K,[]),title('拉普拉斯算子锐化');

matlab数字图像处理实验

实验5要求:

选择图像,使用Sobel,Roberts,Prewitt,LOG,Canny运算符进行边缘检测,并观察效果

%边缘检测
I = imread('2.jpg');
subplot(2,3,1);
imshow(I),title('原图像');
I = rgb2gray(I);
BW1 = edge(I,'sobel',0.1);
BW2 = edge(I,'roberts',0.1);
BW3 = edge(I,'prewitt',0.1);
BW4 = edge(I,'log',0.01);
BW5 = edge(I,'canny',0.1);
subplot(2,3,2);
imshow(BW1);  
title('Sobel算子检测效果')
subplot(2,3,3);
imshow(BW2);
title('Roberts算子检测效果')
subplot(2,3,4);imshow(BW3)  
title('Prewitt算子检测效果')
subplot(2,3,5);
imshow(BW4);
title('LOG算子检测效果')
subplot(2,3,6);
imshow(BW5);  
title('Canny算子检测效果')

matlab数字图像处理实验

以上是本实验的全部内容,因此我不会在上面写下问题。

在本文中,我建议编写MATLAB代码时,尝试添加全部清除;越多越好。为什么?由于未添加,因此之前产生的结果很容易干扰以下内容,例如

matlab数字图像处理实验

我以前曾经遇到过。前面有一个图像,但是第三个消失了。我找不到原因。我添加了clear all;之后,一切正常。希望这可以帮助。附上我的实验文件:(访问代码:1569)

补充:使用MATLAB编写程序时,建议不要使用纯数字作为文件名。我上了血腥的课。当使用纯数字运行时,总是提示您切换目录,但是无论如何切换,都无济于事。记住。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-334043-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...