网站 服务 套餐,手机赚钱,铜陵公司做网站,网站开发可选择的方案有目录
实验二、图像在空间域上的处理方法
实验三、图像在频率域上的处理方法 实验二、图像在空间域上的处理方法
一、实验目的
了解图像亮#xff08;灰#xff09;度变换与空间滤波的意义和手段#xff1b;熟悉图像亮#xff08;灰#xff09;度变换与空间滤波的MATLA…目录
实验二、图像在空间域上的处理方法
实验三、图像在频率域上的处理方法 实验二、图像在空间域上的处理方法
一、实验目的
了解图像亮灰度变换与空间滤波的意义和手段熟悉图像亮灰度变换与空间滤波的MATLAB函数和语法熟练掌握应用MATLAB软件编程进行图像亮灰度变换与空间滤波的方法完成数字图像的对比度增强和直方图均衡化设计空间域平滑和锐化滤波器掌握数字图像在空间域的基本处理方法。
二、实验环境
MATLAB 2014以上版本、Win 8\10\11 系统
三、实验原理
图像亮灰度变换与空间滤波属于在空间域内处理图像是直接对图像的像素进行处理。有两种重要的空间域处理方法即亮度或灰度级变换与空间滤波后一种方法有时称为邻域处理或空间卷积。
图像亮灰度变换采用MATLAB工具箱中的亮度变换函数、直方图处理函数等函数及其相应的语法格式对实验一生成的图像进行处理空间滤波采用MATLAB工具箱中的标准线性和非线性空间滤波器对图像进行空间滤波处理。
涉及函数imread、size、figure、imshow、subplot、imadd、imsubtract 、rgb2gray、imhist、histeq、imnoise、medfilt2
四、实验内容
1新建一个m文件从桌面示例图像文件夹中读取一张彩色图像转换为灰度图读取该图像尺寸并在一个figure窗口同时展示标题分别为“原图”及“灰度图”。
代码 clc;clear;clear all; RGBimread(V.jpg); %图像读入 Irgb2gray(RGB); %把 RGB 图像转换成灰度图像 subplot(121);imshow(RGB),axis on,title(原图); subplot(122);imshow(I),axis on,title(灰度图); 输出结果截图 2读取一张彩色图像转换为灰度图使用imadd及imsubtract 分别对图像进行亮度增和减操作数值为自己学号末位数×2并在一个figure窗口同时展示标题分别为“原图”、“灰度图”、“提亮结果”、“亮度降低结果”。点击右侧工作区中对应图像矩阵观察亮度增减前后数值变化。
代码 clc;clear;clear all; RGBimread(V.jpg); %图像读入 Irgb2gray(RGB); %把 RGB 图像转换成灰度图像 RGB2imadd(RGB,20); RGB3imsubtract(RGB,20); %学号尾数为10 subplot(221);imshow(RGB),axis on,title(原图); subplot(222);imshow(I),axis on,title(灰度图); subplot(223);imshow(RGB2),axis on,title(提亮结果); subplot(224);imshow(RGB3),axis on,title(亮度降低结果); 输出结果截图 3读取两张彩色图像并转换为灰度图使用imhist函数显示该图像的直方图并使用histeq函数分别进行进行直方图均衡化处理。同一个figure窗口中输出标题分别为“原图1”、“灰度图1”“原图2”“灰度图2”、“灰度直方图1”、“灰度直方图2”、“直方图均衡化1”、“直方图均衡化2”。
观察不同图像对应灰度直方图的特征有何差异对比同一张图直方图均衡化前后的灰度分布差异。
代码 clc;clear;clear all; RGBimread(V.jpg); %图像读入 RGB1imread(V1.jpg); %图像读入 Irgb2gray(RGB); %把 RGB 图像转换成灰度图像 I1rgb2gray(RGB1); %把 RGB 图像转换成灰度图像 subplot(421);imshow(RGB),axis on,title(原图1); subplot(422);imshow(I),axis on,title(灰度图1); subplot(423);imshow(RGB1),axis on,title(原图2); subplot(424);imshow(I1),axis on,title(灰度图2); % 计算直方图 hist imhist(I); hist1 imhist(I1); % 对图像进行直方图均衡化处理 img_eq histeq(I); img_eq1 histeq(I1); subplot(425);bar(hist);axis on,title(灰度直方图1); subplot(426);bar(hist1);axis on,title(灰度直方图2); subplot(427);histeq(I),axis on,title(直方图均衡化1); subplot(428);histeq(I1),axis on,title(直方图均衡化2); 输出结果截图 4读取一张彩色图像并转换为灰度图使用imnoise添加椒盐噪声例如I1imnoise(I,’salt pepper’,0.04); 分别使用3*3、5*5、7*7、9*9大小的模板进行中值滤波在相同figure中输出标题分别为“原图”、“添加椒盐噪声”、“x*x模板中值滤波”。
代码 % 读取彩色图像并转换为灰度图 clc;clear;clear all; RGBimread(V.jpg); %图像读入 Irgb2gray(RGB); %把 RGB 图像转换成灰度图像 % 添加椒盐噪声 I_noise imnoise(I, salt pepper, 0.04); % 使用不同大小的模板进行中值滤波 I_median3 medfilt2(I_noise, [3 3]); I_median5 medfilt2(I_noise, [5 5]); I_median7 medfilt2(I_noise, [7 7]); I_median9 medfilt2(I_noise, [9 9]); subplot(321);imshow(RGB),axis on,title(原图); subplot(322);imshow(I_noise),axis on,title(添加椒盐噪声); subplot(323);imshow(I_median3),axis on,title(3*3模板中值滤波); subplot(324);imshow(I_median5),axis on,title(5*5模板中值滤波); subplot(325);imshow(I_median7),axis on,title(7*7模板中值滤波); subplot(326);imshow(I_median9),axis on,title(9*9模板中值滤波); 输出结果截图 5读取一张彩色图像并转换为灰度图利用im2bw函数转换为“二值图像”分别使用sobel算子及Laplacian算子进行锐化在相同figure中输出标题分别为“原图”、“二值图像”、“sobel算子锐化”、“拉普拉斯算子锐化”。
提示Hfspecail (‘soble’); Jfilter2(H,I1)
代码 % 读取一张彩色图像并转换为灰度图 clc;clear;clear all; img imread(V.jpg); gray_img rgb2gray(img); % 利用im2bw函数转换为“二值图像” bw_img im2bw(gray_img); % 使用sobel算子进行锐化 sobel_img edge(bw_img, sobel); % 使用Laplacian算子进行锐化 laplace_img edge(bw_img, log); % 在相同figure中输出结果 figure; subplot(2,2,1); imshow(img); title(原图); subplot(2,2,2); imshow(gray_img); title(灰度图); subplot(2,2,3); imshow(sobel_img); title(Sobel算子锐化); subplot(2,2,4); imshow(laplace_img); title(Laplacian算子锐化); 输出结果截图 实验三、图像在频率域上的处理方法
一、实验目的
了解图像频域处理的意义和手段熟悉离散傅里叶变换的基本性质熟练掌握图像傅里叶变换的方法及应用通过实验了解二维频谱的分布特点通过本实验掌握利用MATLAB的工具箱实现数字图像的频域处理构建各式常见频率域滤波器并熟悉其特点与应用场景。
二、实验环境
MATLAB 2014以上版本、Win 8\10\11 系统
三、实验原理
图像的频率是图像在平面空间上的梯度是表征图像中图像变化剧烈程度的指标。例如大面积的海洋在图像中是一片图像变化缓慢的区域对应的频率值很低;而地表属性变换剧烈的边缘区域在图像中则是一片图像变化剧烈的区域对应的频率值较高。频域滤波增强是利用图像变换方法将原来的图像空间中的图像以某种形式转换到其他空间中然后利用该空间的特有性质方便地处理图像最后再转换回原来的图像空间中从而得到处理后的图像。图像的频率域处理图像处理中占有重要的地位在图像的去噪、图像压缩、特征提取和图像识别方面发挥着重要的作用。
图像频率域采用MATLAB工具箱中的傅里叶变换函数、滤波函数等函数及其相应的语法格式图像进行处理
在MATLAB 中函数fft、fft2和fftn分别可以实现一维、二维和N维DFT 算法:而函数 ifft、ifft2 和 ifftn 则用来计算反 DFT。fftshift 函数可以把傅里叶操作(fftfft2fftn)得到的结果中的零频率成分移到矩阵的中心这样有利于观察频谱
涉及函数imread、figure、imshow、subplot、rgb2gray、log、abs、fft、fft2、fftshift、ifft2
四、实验内容
1新建一个m文件从桌面示例图像文件夹中读取一张彩色图像转换为灰度图利用傅里叶变换函数fft2与fftshift显示图像的傅里叶变换频谱图并在一个figure窗口同时展示标题分别为“原图”、“灰度图”、“变换频谱”。
代码 clc;clear;clear all; Iimread(V.jpg); figure subplot(311),imshow(I),title(原图像) GrayIrgb2gray(I); subplot(312),imshow(GrayI),title(灰度图像) fft2(GrayI); Sfftshift(fft2(GrayI)); subplot(313),imshow(log(abs(S)),[]),title(频谱) 输出结果截图 2读取一张彩色图像转换为灰度图使用fft2进行傅里叶变换接着使用ifft2进行傅里叶逆变换并在一个figure窗口同时展示标题分别为“原图”、“灰度图”、“二维傅里叶变换”、“傅里叶逆变换”。观察变换前后图像及对应图像矩阵是否与原图相同。
代码 clc;clear;clear all; % 读取彩色图像 rgb_img imread(V.jpg); % 转换为灰度图 gray_img rgb2gray(rgb_img); % 进行二维傅里叶变换 fft_img fft2(gray_img); % 进行傅里叶逆变换 ifft_img ifft2(fft_img); % 显示图像 figure; subplot(2, 2, 1); imshow(rgb_img); title(原图); subplot(2, 2, 2); imshow(gray_img); title(灰度图); subplot(2, 2, 3); imshow(abs(fftshift(fft_img)), []); title(二维傅里叶变换); subplot(2, 2, 4); imshow(abs(ifft_img), []); title(傅里叶逆变换); 输出结果截图 3读取一张彩色图像并转换为灰度图接着对图像进行傅里叶正反变换对比变换前后是否相同。同一个figure窗口中输出标题分别为“原图”、“傅里叶变换”“傅里叶反变换”。
代码 clc;clear;clear all; Iimread(V.jpg); figure subplot(311),imshow(I),title(原图像) Argb2gray(I); Bfft2(A); Cfftshift(B); subplot(312),imshow(log(abs(C)),[]),title(傅里叶变换) Difft2(B); subplot(313),imshow(uint8(abs(D))),title(傅里叶反变换) 输出结果截图 4读取一张彩色图像并转换为灰度图使用fft函数及fft2函数验证二维离散傅里叶变换可分解为两个一维离散傅里叶变换先行变换后列变换在相同figure中输出标题分别为“原图”、“fft2实现变换”、“fft实现变换”。
代码 clc;clear;clear all; % 读取彩色图像并转换为灰度图 img imread(V.jpg); gray_img rgb2gray(img); % 在同一figure中输出原图 subplot(1,3,1); imshow(gray_img); title(原图); % 使用fft2函数进行二维离散傅里叶变换 fft2_img fft2(gray_img); % 在同一figure中输出使用fft2函数实现的变换结果 subplot(1,3,2); imshow(log(abs(fftshift(fft2_img))),[]); title(fft2实现变换); % 使用fft函数进行一维离散傅里叶变换先行变换 fft_row_img fft(gray_img,[],1); % 使用fft函数进行一维离散傅里叶变换后列变换 fft_col_img fft(fft_row_img,[],2); % 在同一figure中输出使用fft函数实现的变换结果 subplot(1,3,3); imshow(log(abs(fftshift(fft_col_img))),[]); title(fft实现变换); 输出结果截图 5读取一张彩色图像并转换为灰度图使用imnoise函数加入高斯白噪声绘制加噪后图像使用fft函数绘制加噪后图像傅里叶频谱图。接着设计一个截止频率D0M*10其中M学号末位数的理想低通滤波器(ILPF)对图像进行滤波处理绘制滤波后噪声图及滤波后的傅里叶频谱图。上述结果在同一figure中显示标题分别为“加噪后图像”、“噪声fft”、“滤波后噪声图”、“滤波后噪声图fft”。
提示
①对于大小为M*N的图像频率点(u, v)与频率中心的距离为D(u, v)其表达式为 ②理想低通滤波器的产生公式为 代码 clc;clear;clear all; % 读取彩色图像并转换为灰度图 rgb_img imread(V.jpg); gray_img rgb2gray(rgb_img); % 加入高斯白噪声 noisy_img imnoise(gray_img, gaussian); % 绘制加噪后图像 figure; subplot(2,2,1); imshow(noisy_img); title(加噪后图像); % 使用FFT函数绘制加噪后图像傅里叶频谱图 noisy_fft fft2(noisy_img); noisy_fft_shifted fftshift(noisy_fft); noisy_fft_mag abs(noisy_fft_shifted); subplot(2,2,2); imshow(log(1noisy_fft_mag), []); title(噪声fft); % 设计理想低通滤波器(ILPF)对图像进行滤波处理 M 2; % 学号末位数是0(更换为2) D0 M*10; [height, width] size(noisy_img); [x, y] meshgrid(1:width, 1:height); center_x floor(width/2)1; center_y floor(height/2)1; d sqrt((x-center_x).^2 (y-center_y).^2); % 欧几里得距离 H_ILPF double(dD0); % 理想低通滤波器 % 对图像进行滤波处理 noisy_fft_filtered_shifted noisy_fft_shifted .* H_ILPF; noisy_filtered real(ifft2(ifftshift(noisy_fft_filtered_shifted))); % 绘制滤波后噪声图及滤波后的傅里叶频谱图 subplot(2,2,3); imshow(noisy_filtered, []); title(滤波后噪声图); filtered_fft fft2(noisy_filtered); filtered_fft_shifted fftshift(filtered_fft); filtered_fft_mag abs(filtered_fft_shifted); subplot(2,2,4); imshow(log(1filtered_fft_mag), []); title(滤波后噪声图fft); 输出结果截图