前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【计算机视觉】数字图像处理基础知识题

【计算机视觉】数字图像处理基础知识题

作者头像
zstar
发布2022-09-01 16:30:03
9010
发布2022-09-01 16:30:03
举报
文章被收录于专栏:往期博文往期博文

本文是计算机视觉课程的平时练习汇总,所用到的图片和实验报告的获取方式见文末

题1

1、产生下图所示亮块图像 f1(x,y)(128×128大小,暗处=0,亮处=255),对其进行FFT。

在这里插入图片描述
在这里插入图片描述

(1)同屏显示原图f1和FFT(f1)的幅度谱图; (2)若令f2(x,y)=(-1)x+y f1(x,y),重复以上过程,比较二者幅度谱的异同,简述理由; (3)若将f2(x,y)顺时针旋转45度得到f3(x,y),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较。

(1) 原图f1和FFT(f1)的幅度谱图如图1所示

图1. 原图f1和FFT(f1)的幅度谱图
图1. 原图f1和FFT(f1)的幅度谱图

(2) 令

f2(x,y)=(-1)^(x+y) f1(x,y)

,f2和FFT(f2)的幅度谱图如图2所示。

图2. 原图f2和FFT(f2)的幅度谱图
图2. 原图f2和FFT(f2)的幅度谱图

两者的异同: 不同点:f2的频谱是对f1频谱的移位。 相同点:频谱的实质没有改变,幅度等都没有发生变化。

(3) 将f2(x,y)顺时针旋转45度得到f3(x,y),FFT(f2)的幅度谱和FFT(f3)的幅度谱如图3所示。

图3. FFT(f2)的幅度谱图和FFT(f3)的幅度谱图
图3. FFT(f2)的幅度谱图和FFT(f3)的幅度谱图

matlab代码:

代码语言:javascript
复制
% 生成第一问图像
f1=zeros(128,128);
for i=38:1:90
    for j=58:1:70
        f1(i,j)=255;
    end
end
% 第一小问
figure(1)
subplot(1,2,1);
imshow (f1);
subplot(1,2,2);
imshow (fft2(f1));
% 第二小问
for i=1:1:128
    for j=1:1:128
        f2(i,j)=(-1)^(i+j)*f1(i,j);
    end
end
figure(2);
subplot(1,2,1);
imshow (f2);
subplot(1,2,2);
imshow (fft2(f2));
% 第三小问
figure(3);
f3=imrotate(f2,-45,'bilinear');%将f2顺时针旋转45度
subplot(1,2,1);
imshow(fft2(f2));%显示f2的频谱
title('FFT(f2)的幅度谱');
subplot(1,2,2);
imshow(fft2(f3));%显示f3的频谱
title('FFT(f3)的幅度谱');

题2

2.对512x512大小、256级灰度的数字图像l ena进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。 本题采用了高斯滤波器来对图像进行低通和高通滤波。滤波器公式如下: 低通滤波(D_0为截止频率,本实验中取值为30Hz):

在这里插入图片描述
在这里插入图片描述

高通滤波(D_0为截止频率,本实验中取值为30Hz):

在这里插入图片描述
在这里插入图片描述
图4. lena原图、幅度谱图和低通、高通滤波结果图
图4. lena原图、幅度谱图和低通、高通滤波结果图

如图所示,图像经过低通滤波后,图像主体仍然保留,但羽毛、轮廓等高频信息被滤除,图像经过高通滤波后,图像主体信息被滤除,图像轮廓信息被提取出来。

matlab代码:

代码语言:javascript
复制
data=imread('D:\Desktop\计算机视觉\平时作业\img\lena.bmp'); 
figure(1);
subplot(2,2,1)
imshow(data);
title('原图');
subplot(2,2,2);
imshow(fft2(data));
title('幅度谱图');
%低通滤波
s=fftshift(fft2(data));
[M,N]=size(s);                    
n=2;   
%GLPF滤波d0=30 
d0=30;                             
n1=floor(M/2);                          %对M/2进行取整
n2=floor(N/2);                           %对N/2进行取整
for i=1:M 
    for j=1:N
        d=sqrt((i-n1)^2+(j-n2)^2);         %点(i,j)到傅立叶变换中心的距离
               h=1*exp(-1/2*(d^2/d0^2));  %GLPF滤波函数
        s(i,j)=h*s(i,j);                   %GLPF滤波后的频域表示
    end
end
s=ifftshift(s);                           %对s进行反FFT移动
s=uint8(real(ifft2(s)));                                     
subplot(2,2,3);      
imshow(s);     
title('低通滤波');
%高通滤波
p=fftshift(fft2(data));
[M,N]=size(p);                     %分别返回p的行数到M中,列数到N中
n=2;                                  %对n赋初值
%GHPF滤波d1=30
d1=30;                               
n3=floor(M/2);                        
n4=floor(N/2);                         
for i=1:M 
    for j=1:N
        dd=sqrt((i-n3)^2+(j-n4)^2);         %点(i,j)到傅立叶变换中心的距离
               h1=1-exp(-1/2*(dd^2/d1^2));  %GHPF滤波函数
        p(i,j)=h1*p(i,j);                   %GHPF滤波后的频域表示
    end
end
p=ifftshift(p);                           %对p进行反FFT移动
p=uint8(real(ifft2(p)));                                     
subplot(2,2,4);     
imshow(p);
title('高通滤波');

题3

3、对图像pollen进行如下处理: (1)使用直方图均衡化及直方图规定化,展示对比度拉伸的效果,要求先转化为灰度级L=8,再按要求转化,写出详细的过程,其中规定直方图为0,0,0,0.15,0.20,0.30,0.20,0.15 首先将图像pollen转化为灰度级L=8,如图5所示:

图5. Pollen原图和灰度级L=8转换图
图5. Pollen原图和灰度级L=8转换图

之后将其进行直方图均衡化和规定化,如图6所示:

图6. Pollen直方图和均衡化、规定化直方图
图6. Pollen直方图和均衡化、规定化直方图

从图中可以看出,原图中像素点大多为2/8和3/8灰度级,直方图均衡化之后,原图中像素点在各灰度级上均匀分布。直方图规定化之后,像素点的分布情况满足题目预设的分布条件。

(2)对直方图均衡化后的图像加入高斯噪声,用4-邻域平均法和中值滤波平滑加噪声图像(图像四周边界不处理,下同),同屏显示原图像、加噪图像和处理后的图像。

① 不加门限; ② 加门限

在这里插入图片描述
在这里插入图片描述

,(其中

在这里插入图片描述
在这里插入图片描述

) 原图像、加噪图像、不加门限平滑后图像,加门限后平滑后图像如图7所示:

图7. Pollen原图、加噪声图像、处理后图像
图7. Pollen原图、加噪声图像、处理后图像

matlab代码:

代码语言:javascript
复制
% 第一小问
I=imread('D:\Desktop\计算机视觉\平时作业\img\pollen.tif');
figure(1);
subplot(1,2,1);
imshow(I);
title('原图');
% L=8灰度级
[wid, hei] = size(I);
img8 = zeros(wid, hei);
for i=1:wid
      for j=1:hei
          img8(i,j)=floor(I(i,j)/32);
      end
end
subplot(1,2,2);
imshow(uint8(img8),[0,7]);
title('灰度级L=8');
figure(2);
subplot(3,2,[1,2]);
imhist(I,8);
title('直方图');
J=histeq(I);
subplot(3,2,[3,4]);
imhist(J,8);
title('直方图均衡化');
subplot(3,2,[5,6]);
hgram=[0,0,0,0.15,0.20,0.30,0.20,0.15];
H=histeq(I,hgram);
imhist(H,8);
title('规定化后直方图');
% 第二小问
figure(3);
I1=imnoise(I,'gaussian'); %加高斯噪声
H1=[0 1 0;1 0 1;0 1 0]/4; %4×4领域模板
J1=imfilter(J,H1); %领域平均
subplot(1,4,1);
imshow(I); %显示图像I
title('原图像');
subplot(1,4,2);
imshow(I1);
title('加噪声后图像');
subplot(1,4,3);
imshow(J1);   
title('不加门限平滑后图像');
%加门限后滤波
T= 2*sum(I1(:))/500^2;
% T= 0;
im_T = zeros(500,500);
for i = 1:500
    for j = 1:500
        if abs(I1(i,j) - J(i,j))>T
            im_T(i,j) = J(i,j);
        else 
            im_T(i,j) = I1(i,j);
        end
    end
end
subplot(1,4,4);
imshow(im_T);
title('加门限后');

题4

4、(1)用Laplacian锐化算子(分

\alpha=1

\alpha=2

两种情况)对512x5 12大小、256级灰度的数字图像lena进行锐化处理,显示处理前、后图像。处理前后的图像如图8所示:

图8. Laplacian锐化处理前后图像
图8. Laplacian锐化处理前后图像

(2) 若令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

则回答如下问题: ①

f(m,n)

g_1(m,n)

g_2(m,n)

之间有何关系? 三者的关系为:

在这里插入图片描述
在这里插入图片描述

g_2(m,n)

代表图像中的哪些信息?

g_2(m,n)

代表了原图像中的二阶梯度信息。

③ 由此得出图像锐化的实质是什么? 图像锐化的实质是将原图像与梯度信息叠加,对目标边缘进行增强。

matlab代码

代码语言:javascript
复制
I=imread('D:\Desktop\计算机视觉\平时作业\img\lena.jpg');
figure(1);
subplot(1,3,1);imshow(I);title('原始图像');
L=fspecial('laplacian');
L1=[0 -1 0;-1 5 -1;0 -1 0];
L2=[0 -2 0;-2 9 -2;0 -2 0];
LP1=imfilter(I,L1,'replicate');% α=1时的拉普拉斯算子
LP2=imfilter(I,L2,'replicate');% α=2时的拉普拉斯算子
subplot(1,3,2);imshow(LP1);title('Laplacian算子α=1锐化图像');
subplot(1,3,3);imshow(LP2);title('Laplacian算子α=2锐化图像');

题5

5、分别利用Roberts、Prewitt、Sobel、Laplacian、Canny边缘检测算子,对256级灰度的自然图像iris-Na、光学遥感图像bridge-RS、SAR图像road-SAR进行边缘检测,显示处理前、后图像,并阐述不同算法和数据源对结果的影响。 自然图像iris-Na:

图9. iris-Na处理前后图像
图9. iris-Na处理前后图像

光学遥感图像bridge-RS:

图10. bridge-RS处理前后图像
图10. bridge-RS处理前后图像

SAR图像road-SAR:

图11. road-SAR处理前后图像
图11. road-SAR处理前后图像

不同算法结果分析: Roberts算子采用对角方向相邻两像素之差,也被称作4点差分法,对噪声较敏感。从三种图像上可以看出,使用Roberts算子进行边缘检测,检测出的结果较为稀疏,仅包含部分图像主题信息。 Prewitt算子先求平均,再求差分来计算梯度,也被称作平均差分法。从三种图像上可以看出,使用Prewitt算子进行边缘检测,检测出的结果比Roberts算子的结果更加稠密一些,同时能够一定程度上抑制噪声的干扰。

Sobel算子当前行或列对应的值加权后,再进行平均和差分,也被称作加权平均差分法。从三种图像上可以看出,使用Sobel算子结果和使用Prewitt算子的结果近似,但其边缘模糊的程度要略低于Prewitt算子。 Laplacian算子是求像素点的二阶偏导,优点是各向同性、线性和唯一不变性;对孤立点及线段的检测效果好,缺点是对噪声敏感,对噪声有双倍加强作用;不能检测出边的方向,常产生双像素的边缘。相比与上述三种算子,Laplacian算子得到的结果得到的细节信息更多,但同时对于噪声较多的road-SAR效果较差。

Canny算子基本思想是找寻一幅图像中灰度强度变化最强的位置,首先它用高斯滤波来平滑图像,然后找寻图像的强度梯度,之后应用非最大抑制技术来消除边误检,最后应用双阈值的方法来检测和连接边界。从结果图上可以发现,Canny算子检测的结果最为丰富,很多细节信息都被检测出来,同时由于它独特的处理方法,边缘部分比较清晰。

不同数据源分析: 本题中使用的三种数据源,格式并不相同。检测时首先将图像转换成灰度图,然后再进行检测。其中,iris-Na和bridge-RS图像的噪声较少,road-SAR图像的噪声较多。

对于iris-Na图像,图像主体是鸢尾花,背景包含比较杂乱的枝叶信息。对于该图像,Roberts算子,Prewitt算子和Sobel算子都能较好地将图像主体边缘检测出来。Laplacian算子和Canny算子在此基础上能够检测出更多的细节信息。

对于bridge-RS图像,Roberts算子,Prewitt算子和Sobel算子同样能够将图像的主体桥梁检测出来,但对于两岸细节信息较为忽略,Laplacian算子和Canny算子能够捕捉到主体和细节信息。

对于road-SAR图像,由于包含了较多的噪声信息,Roberts算子,Prewitt算子的检测效果不太理想,而Sobel算子能够较少地受到噪声的影响,检测出图中两条公路的主体信息。Laplacian算子和Canny算子都在一定程度上将噪声信息进行了放大增强,导致最终结果的可识别性不如Sobel算子。

matlab代码:

代码语言:javascript
复制
clear;
close all;
Img=imread('D:\Desktop\计算机视觉\平时作业\img\iris-Na.tif');
% Img=imread('D:\Desktop\计算机视觉\平时作业\img\bridge-RS.jpg'); 
% Img=imread('D:\Desktop\计算机视觉\平时作业\img\road-SAR.png'); 
I = rgb2gray(Img);
figure(1)
%Roberts梯度法锐化
subplot(2,3,1);imshow(Img);title('原始图像');
S=edge(I,'Roberts');
subplot(2,3,2);imshow(S);title('Roberts梯度法锐化图像');
%Prewitt算子锐化
S=edge(I,'Prewitt');
subplot(2,3,3);imshow(S);title('Prewitt算子锐化图像');
%Sobel算子锐化
S=edge(I,'Sobel');
subplot(2,3,4);imshow(S);title('Sobel算子锐化图像');
%Laplacian算子锐化
S=edge(I,'log');
subplot(2,3,5);imshow(S);title('Laplacian算子锐化图像');
%Canny算子锐化
Cimg = edge(I,'canny');
subplot(2,3,6);imshow(Cimg);title('Canny算子锐化图像');

图片和实验报告

图片和实验报告下载链接:https://download.csdn.net/download/qq1198768105/85837789

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题1
  • 题2
  • 题3
  • 题4
  • 题5
  • 图片和实验报告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档