目錄
實(shí)驗(yàn)二、圖像在空間域上的處理方法
實(shí)驗(yàn)三、圖像在頻率域上的處理方法
實(shí)驗(yàn)二、圖像在空間域上的處理方法
一、實(shí)驗(yàn)?zāi)康?/strong>
- 了解圖像亮(灰)度變換與空間濾波的意義和手段;
- 熟悉圖像亮(灰)度變換與空間濾波的MATLAB函數(shù)和語法;
- 熟練掌握應(yīng)用MATLAB軟件編程進(jìn)行圖像亮(灰)度變換與空間濾波的方法;
- 完成數(shù)字圖像的對(duì)比度增強(qiáng)和直方圖均衡化,設(shè)計(jì)空間域平滑和銳化濾波器,掌握數(shù)字圖像在空間域的基本處理方法。
二、實(shí)驗(yàn)環(huán)境
MATLAB 2014以上版本、Win 8\10\11 系統(tǒng)
三、實(shí)驗(yàn)原理
圖像亮(灰)度變換與空間濾波屬于在空間域內(nèi)處理圖像,是直接對(duì)圖像的像素進(jìn)行處理。有兩種重要的空間域處理方法,即亮度(或灰度級(jí))變換與空間濾波,后一種方法有時(shí)稱為鄰域處理或空間卷積。
圖像亮(灰)度變換采用MATLAB工具箱中的亮度變換函數(shù)、直方圖處理函數(shù)等函數(shù)及其相應(yīng)的語法格式對(duì)實(shí)驗(yàn)一生成的圖像進(jìn)行處理;空間濾波采用MATLAB工具箱中的標(biāo)準(zhǔn)(線性和非線性)空間濾波器對(duì)圖像進(jìn)行空間濾波處理。
涉及函數(shù):imread、size、figure、imshow、subplot、imadd、imsubtract 、rgb2gray、imhist、histeq、imnoise、medfilt2
四、實(shí)驗(yàn)內(nèi)容
(1)新建一個(gè)m文件,從桌面示例圖像文件夾中讀取一張彩色圖像,轉(zhuǎn)換為灰度圖,讀取該圖像尺寸,并在一個(gè)figure窗口同時(shí)展示,標(biāo)題分別為(“原圖”)及(“灰度圖”)。
代碼:
clc;clear;clear all;
RGB=imread('V.jpg'); %圖像讀入
I=rgb2gray(RGB);?? %把 RGB 圖像轉(zhuǎn)換成灰度圖像
subplot(121);imshow(RGB),axis on,title("原圖");
subplot(122);imshow(I),axis on,title("灰度圖");
輸出結(jié)果截圖:文章來源:http://www.zghlxwxcb.cn/news/detail-480881.html
(2)讀取一張彩色圖像,轉(zhuǎn)換為灰度圖,使用imadd及imsubtract 分別對(duì)圖像進(jìn)行亮度增和減操作,數(shù)值為自己學(xué)號(hào)末位數(shù)×2,并在一個(gè)figure窗口同時(shí)展示,標(biāo)題分別為“原圖”、“灰度圖”、“提亮結(jié)果”、“亮度降低結(jié)果”。點(diǎn)擊右側(cè)工作區(qū)中對(duì)應(yīng)圖像矩陣,觀察亮度增減前后數(shù)值變化。
代碼:
clc;clear;clear all;
RGB=imread('V.jpg'); %圖像讀入
I=rgb2gray(RGB);?? %把 RGB 圖像轉(zhuǎn)換成灰度圖像
RGB2=imadd(RGB,20);
RGB3=imsubtract(RGB,20); %學(xué)號(hào)尾數(shù)為10
subplot(221);imshow(RGB),axis on,title("原圖");
subplot(222);imshow(I),axis on,title("灰度圖");
subplot(223);imshow(RGB2),axis on,title("提亮結(jié)果");
subplot(224);imshow(RGB3),axis on,title("亮度降低結(jié)果");
輸出結(jié)果截圖:
(3)讀取兩張彩色圖像并轉(zhuǎn)換為灰度圖,使用imhist函數(shù)顯示該圖像的直方圖,并使用histeq函數(shù)分別進(jìn)行進(jìn)行直方圖均衡化處理。同一個(gè)figure窗口中輸出,標(biāo)題分別為“原圖1”、“灰度圖1”,“原圖2”,“灰度圖2”、“灰度直方圖1”、“灰度直方圖2”、“直方圖均衡化1”、“直方圖均衡化2”。
觀察不同圖像對(duì)應(yīng)灰度直方圖的特征有何差異,對(duì)比同一張圖直方圖均衡化前后的灰度分布差異。
代碼:
clc;clear;clear all;
RGB=imread('V.jpg'); %圖像讀入
RGB1=imread('V1.jpg'); %圖像讀入
I=rgb2gray(RGB);?? %把 RGB 圖像轉(zhuǎn)換成灰度圖像
I1=rgb2gray(RGB1);?? %把 RGB 圖像轉(zhuǎn)換成灰度圖像
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");
% 計(jì)算直方圖
hist = imhist(I);
hist1 = imhist(I1);
% 對(duì)圖像進(jìn)行直方圖均衡化處理
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");
輸出結(jié)果截圖:
(4)讀取一張彩色圖像并轉(zhuǎn)換為灰度圖,使用imnoise添加椒鹽噪聲,例如I1=imnoise(I,’salt& pepper’,0.04); 分別使用3*3、5*5、7*7、9*9大小的模板進(jìn)行中值濾波,在相同figure中輸出,標(biāo)題分別為“原圖”、“添加椒鹽噪聲”、“x*x模板中值濾波”。
代碼:
% 讀取彩色圖像并轉(zhuǎn)換為灰度圖
clc;clear;clear all;
RGB=imread('V.jpg'); %圖像讀入
I=rgb2gray(RGB);?? %把 RGB 圖像轉(zhuǎn)換成灰度圖像
% 添加椒鹽噪聲
I_noise = imnoise(I, 'salt & pepper', 0.04);
% 使用不同大小的模板進(jìn)行中值濾波
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模板中值濾波");
輸出結(jié)果截圖:
(5)讀取一張彩色圖像并轉(zhuǎn)換為灰度圖,利用im2bw函數(shù)轉(zhuǎn)換為“二值圖像”,分別使用sobel算子及Laplacian算子進(jìn)行銳化,在相同figure中輸出,標(biāo)題分別為“原圖”、“二值圖像”、“sobel算子銳化”、“拉普拉斯算子銳化”。
提示:H=fspecail (‘soble’); J=filter2(H,I1);
代碼:
% 讀取一張彩色圖像并轉(zhuǎn)換為灰度圖
clc;clear;clear all;
img = imread('V.jpg');
gray_img = rgb2gray(img);
% 利用im2bw函數(shù)轉(zhuǎn)換為“二值圖像”
bw_img = im2bw(gray_img);
% 使用sobel算子進(jìn)行銳化
sobel_img = edge(bw_img, 'sobel');
% 使用Laplacian算子進(jìn)行銳化
laplace_img = edge(bw_img, 'log');
% 在相同figure中輸出結(jié)果
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算子銳化');
輸出結(jié)果截圖:
實(shí)驗(yàn)三、圖像在頻率域上的處理方法
一、實(shí)驗(yàn)?zāi)康?/strong>
- 了解圖像頻域處理的意義和手段;
- 熟悉離散傅里葉變換的基本性質(zhì);
- 熟練掌握?qǐng)D像傅里葉變換的方法及應(yīng)用;
- 通過實(shí)驗(yàn)了解二維頻譜的分布特點(diǎn);
- 通過本實(shí)驗(yàn)掌握利用MATLAB的工具箱實(shí)現(xiàn)數(shù)字圖像的頻域處理,構(gòu)建各式常見頻率域?yàn)V波器,并熟悉其特點(diǎn)與應(yīng)用場(chǎng)景。
二、實(shí)驗(yàn)環(huán)境
MATLAB 2014以上版本、Win 8\10\11 系統(tǒng)
三、實(shí)驗(yàn)原理
圖像的頻率是圖像在平面空間上的梯度,是表征圖像中圖像變化劇烈程度的指標(biāo)。例如,大面積的海洋在圖像中是一片圖像變化緩慢的區(qū)域,對(duì)應(yīng)的頻率值很低;而地表屬性變換劇烈的邊緣區(qū)域在圖像中則是一片圖像變化劇烈的區(qū)域,對(duì)應(yīng)的頻率值較高。頻域?yàn)V波增強(qiáng)是利用圖像變換方法將原來的圖像空間中的圖像以某種形式轉(zhuǎn)換到其他空間中,然后利用該空間的特有性質(zhì)方便地處理圖像,最后再轉(zhuǎn)換回原來的圖像空間中,從而得到處理后的圖像。圖像的頻率域處理圖像處理中占有重要的地位,在圖像的去噪、圖像壓縮、特征提取和圖像識(shí)別方面發(fā)揮著重要的作用。
圖像頻率域采用MATLAB工具箱中的傅里葉變換函數(shù)、濾波函數(shù)等函數(shù)及其相應(yīng)的語法格式圖像進(jìn)行處理;
在MATLAB 中,函數(shù)fft、fft2和fftn分別可以實(shí)現(xiàn)一維、二維和N維DFT 算法:而函數(shù) ifft、ifft2 和 ifftn 則用來計(jì)算反 DFT。fftshift 函數(shù)可以把傅里葉操作(fft,fft2,fftn)得到的結(jié)果中的零頻率成分移到矩陣的中心,這樣有利于觀察頻譜;
涉及函數(shù):imread、figure、imshow、subplot、rgb2gray、log、abs、fft、fft2、fftshift、ifft2
四、實(shí)驗(yàn)內(nèi)容
(1)新建一個(gè)m文件,從桌面示例圖像文件夾中讀取一張彩色圖像,轉(zhuǎn)換為灰度圖,利用傅里葉變換函數(shù)fft2與fftshift顯示圖像的傅里葉變換頻譜圖,并在一個(gè)figure窗口同時(shí)展示,標(biāo)題分別為“原圖”、“灰度圖”、“變換頻譜”。
代碼:
clc;clear;clear all;
I=imread('V.jpg');
figure
subplot(311),imshow(I),title("原圖像")
GrayI=rgb2gray(I);
subplot(312),imshow(GrayI),title('灰度圖像')
fft2(GrayI);
S=fftshift(fft2(GrayI));
subplot(313),imshow(log(abs(S)),[]),title('頻譜')
輸出結(jié)果截圖:
(2)讀取一張彩色圖像,轉(zhuǎn)換為灰度圖,使用fft2進(jìn)行傅里葉變換,接著使用ifft2進(jìn)行傅里葉逆變換,并在一個(gè)figure窗口同時(shí)展示,標(biāo)題分別為“原圖”、“灰度圖”、“二維傅里葉變換”、“傅里葉逆變換”。觀察變換前后圖像,及對(duì)應(yīng)圖像矩陣是否與原圖相同。
代碼:
clc;clear;clear all;
% 讀取彩色圖像
rgb_img = imread('V.jpg');
% 轉(zhuǎn)換為灰度圖
gray_img = rgb2gray(rgb_img);
% 進(jìn)行二維傅里葉變換
fft_img = fft2(gray_img);
% 進(jìn)行傅里葉逆變換
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('傅里葉逆變換');
輸出結(jié)果截圖:
(3)讀取一張彩色圖像并轉(zhuǎn)換為灰度圖,接著對(duì)圖像進(jìn)行傅里葉正反變換,對(duì)比變換前后是否相同。同一個(gè)figure窗口中輸出,標(biāo)題分別為“原圖”、“傅里葉變換”,“傅里葉反變換”。
代碼:
clc;clear;clear all;
I=imread('V.jpg');
figure
subplot(311),imshow(I),title("原圖像")
A=rgb2gray(I);
B=fft2(A);
C=fftshift(B);
subplot(312),imshow(log(abs(C)),[]),title('傅里葉變換')
D=ifft2(B);
subplot(313),imshow(uint8(abs(D))),title('傅里葉反變換')
輸出結(jié)果截圖:
(4)讀取一張彩色圖像并轉(zhuǎn)換為灰度圖,使用fft函數(shù)及fft2函數(shù)驗(yàn)證二維離散傅里葉變換可分解為兩個(gè)一維離散傅里葉變換(先行變換,后列變換)在相同figure中輸出,標(biāo)題分別為“原圖”、“fft2實(shí)現(xiàn)變換”、“fft實(shí)現(xiàn)變換”。
代碼:
clc;clear;clear all;
% 讀取彩色圖像并轉(zhuǎn)換為灰度圖
img = imread('V.jpg');
gray_img = rgb2gray(img);
% 在同一figure中輸出原圖
subplot(1,3,1);
imshow(gray_img);
title('原圖');
% 使用fft2函數(shù)進(jìn)行二維離散傅里葉變換
fft2_img = fft2(gray_img);
% 在同一figure中輸出使用fft2函數(shù)實(shí)現(xiàn)的變換結(jié)果
subplot(1,3,2);
imshow(log(abs(fftshift(fft2_img))),[]);
title('fft2實(shí)現(xiàn)變換');
% 使用fft函數(shù)進(jìn)行一維離散傅里葉變換(先行變換)
fft_row_img = fft(gray_img,[],1);
% 使用fft函數(shù)進(jìn)行一維離散傅里葉變換(后列變換)
fft_col_img = fft(fft_row_img,[],2);
% 在同一figure中輸出使用fft函數(shù)實(shí)現(xiàn)的變換結(jié)果
subplot(1,3,3);
imshow(log(abs(fftshift(fft_col_img))),[]);
title('fft實(shí)現(xiàn)變換');
輸出結(jié)果截圖:
(5)讀取一張彩色圖像并轉(zhuǎn)換為灰度圖,使用imnoise函數(shù)加入高斯白噪聲,繪制加噪后圖像,使用fft函數(shù)繪制加噪后圖像傅里葉頻譜圖。接著設(shè)計(jì)一個(gè)截止頻率D0=M*10(其中M=學(xué)號(hào)末位數(shù))的理想低通濾波器(ILPF)對(duì)圖像進(jìn)行濾波處理,繪制濾波后噪聲圖及濾波后的傅里葉頻譜圖。上述結(jié)果在同一figure中顯示,標(biāo)題分別為“加噪后圖像”、“噪聲fft”、“濾波后噪聲圖”、“濾波后噪聲圖fft”。
提示:
①對(duì)于大小為M*N的圖像,頻率點(diǎn)(u, v)與頻率中心的距離為D(u, v),其表達(dá)式為:
②理想低通濾波器的產(chǎn)生公式為:
代碼:
clc;clear;clear all;
% 讀取彩色圖像并轉(zhuǎn)換為灰度圖
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函數(shù)繪制加噪后圖像傅里葉頻譜圖
noisy_fft = fft2(noisy_img);
noisy_fft_shifted = fftshift(noisy_fft);
noisy_fft_mag = abs(noisy_fft_shifted);
subplot(2,2,2);
imshow(log(1+noisy_fft_mag), []);
title('噪聲fft');
% 設(shè)計(jì)理想低通濾波器(ILPF)對(duì)圖像進(jìn)行濾波處理
M = 2; % 學(xué)號(hào)末位數(shù)是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(d<=D0); % 理想低通濾波器
% 對(duì)圖像進(jìn)行濾波處理
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(1+filtered_fft_mag), []);
title('濾波后噪聲圖fft');
輸出結(jié)果截圖:
文章來源地址http://www.zghlxwxcb.cn/news/detail-480881.html
到了這里,關(guān)于數(shù)字圖像處理實(shí)驗(yàn)報(bào)告的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!