第一篇:數(shù)字圖像處理實驗一
一、實驗?zāi)康募皟?nèi)容 內(nèi)容: 灰度變換和空間濾波 1.灰度變換
利用imadjust函數(shù)(可結(jié)合stretchlim函數(shù))對圖像對比度拉伸 2.直方圖繪制、均衡和匹配
利用imhist,histeq函數(shù)完成圖2.8及圖2.11的功能 3.空間濾波
線性空間濾波:
利用濾波函數(shù)imfilter函數(shù)完成圖2.16中b,c,d,e的圖像平滑效果
利用fspecial函數(shù)生成average,disk,gaussian濾波器完成圖像的平滑效果
利用fspecial函數(shù)生成prewitt, sobel,laplacian濾波器完成圖像的銳化效果
非線性空間濾波
利用中值濾波函數(shù)medfilt2去除椒鹽噪聲
二、實驗原理
①、函數(shù)imadjust是一個基本的圖像處理工具箱函數(shù),用于對灰度級圖像進(jìn)行灰度變換。
g=imadjust(f,[low_in high_in],[low_out high_out],gamma),該函數(shù)將圖像f中的灰度值映射為圖像g中的新值,即將low_in至high_in之間的值映射到low_out至high_out之間的值。
②、函數(shù)imhist是處理圖像直方圖的核心函數(shù)
h=imhist(f,b),其中f為輸入圖像,h為其直方圖,b是用來形成直方圖的“容器”的數(shù)目。
③、函數(shù)histeq是實現(xiàn)直方圖匹配的函數(shù)
g=histeq(f,hspec),其中f為輸入圖像,hspec為規(guī)定的直方圖,g為輸出圖像,輸出圖像的直方圖近似于指定的直方圖hspec。
④、函數(shù)imfilter用來實現(xiàn)線性空間濾波
-1-g=imfilter(f,w,filtering_mode,boundary_options,size_options),其中f為輸入圖像,w為濾波模板,g為濾波后的結(jié)果。
用于平滑的濾波器有:’average’,’disk’,’gaussian’ 用于銳化的濾波器有:’laplacian’,’prewit’,’sobel’
三、實驗源代碼及結(jié)果
1、灰度變換、直方圖繪制、均衡和匹配 f=imread('anna.jpg')%讀取anna.jpg圖片 subplot(2,4,1)imshow(f),title('原圖')%顯示原圖
f1=imadjust(f,[0.2 0.5],[ 0 1])%將圖片的灰度級別在0.2至0.5之間的部分拉伸
至0到1之間
subplot(2,4,2)imshow(f1),title('灰度拉伸之后')%顯示灰度拉伸之后的圖片 subplot(2,4,3)imhist(f),title('原圖直方圖')f2=histeq(f,128)%進(jìn)行直方圖均衡化,灰度級數(shù)設(shè)為128 subplot(2,4,4)imhist(f2),title('均衡化')%顯示均衡化之后的直方圖 g=imread('bag.png')%讀取bag.png圖像
h=imhist(g)%生成bag.png圖像的直方圖賦值給向量h subplot(2,4,5)imhist(g),title('規(guī)定的直方圖')f3=histeq(f,h)%進(jìn)行直方圖匹配 subplot(2,4,6)imshow(f3),title('直方圖匹配')運行結(jié)果
2、線性空間濾波
a=imread('block.png')%讀取block.png圖像 figure,subplot(2,3,1)imshow(a),title('原圖')w=1/(31*31)*ones(31)%生成31*31的全為1的矩陣,命名為w a1=imfilter(a,w)%利用imfilter函數(shù)進(jìn)行濾波 subplot(2,3,2)imshow(a1)a2=imfilter(a,w,'replicate')%圖像的大小通過復(fù)制圖像邊界外的值來擴展 subplot(2,3,3)imshow(a2)a3=imfilter(a,w,'symmetric')%圖像的大小通過邊界鏡像反射來擴展 subplot(2,3,4)
-3-imshow(a3)a4=imfilter(a,w,'circular')%圖像的大小通過將圖像處理為二維周期函數(shù)的一個周期來擴展
subplot(2,3,5)imshow(a4)aa=im2uint8(a)a5=imfilter(aa,w,'replicate')subplot(2,3,6)imshow(a5)
b=imread('anna.jpg')figure,subplot(2,2,1)imshow(b),title('原圖')w1=fspecial('average',[4])%生成average平滑濾波器 b1=imfilter(b,w1)%進(jìn)行濾波 subplot(2,2,2)imshow(b1),title('average')w2=fspecial('disk',5)%生成disk平滑濾波器 b2=imfilter(b,w2)subplot(2,2,3)imshow(b2),title('disk')w3=fspecial('gaussian',[3 3],0.5)%生成gaussian平滑濾波器 b3=imfilter(b,w3)
-4-subplot(2,2,4)imshow(b3),title('gaussian')
c=imread('anna.jpg')figure,subplot(2,2,1)imshow(c),title('原圖')w4=fspecial('prewitt')%生成prewitt銳化濾波器 c1=imfilter(c,w4)subplot(2,2,2)imshow(c1),title('prewitt')w5=fspecial('sobel')%生成sobel銳化濾波器 c2=imfilter(c,w5)subplot(2,2,3)imshow(c2),title('sobel')w6=fspecial('laplacian')%生成laplacian銳化濾波器 c3=imfilter(c,w6)subplot(2,2,4)imshow(c3),title('laplacian')運行結(jié)果
3、非線性空間濾波
d=imread('anna.jpg')%讀取anna.jpg圖像,賦值給d d1=imnoise(d,'salt & pepper',0.3)%用imnoise函數(shù)對d生成椒鹽噪聲 figure,subplot(1,2,1)imshow(d1),title('被椒鹽噪聲污染的圖像')d2=medfilt2(d1)&用中值濾波器進(jìn)行濾波 subplot(1,2,2)imshow(d2),title('去除椒鹽噪聲的圖像')運行結(jié)果
四、實驗總結(jié)(心得體會)
通過這次實驗,首先我熟悉了Matlab的基本操作,掌握了圖像處理的基本操作,比如如何讀一張圖片進(jìn)來、如何顯示一張圖片等等。這些都是最基本的操作。其次我知道了灰度變換的函數(shù)imadjust的使用,它是將選定的灰度級別范圍變換為規(guī)定的范圍,可以自由變換圖像的灰度級別;還有掌握了如何畫圖像的直方圖、將直方圖均衡化等等。還學(xué)會了圖像的濾波處理,通過函數(shù)imfilter進(jìn)行濾波。常用的平滑濾波器有average,disk,gaussian、銳化濾波器有prewitt, sobel,laplacian。還學(xué)會了用中值濾波去除椒鹽噪聲。這些都是一些比較初級的函數(shù),后面還有很多圖像處理方法需要學(xué)習(xí)。
第二篇:數(shù)字圖像處理實驗一
實驗報告
一、實驗原理
1.調(diào)用imread函數(shù)將圖像文件讀入圖像數(shù)組(矩陣)
A=imread(filename,fmt)2.調(diào)用imwrite函數(shù)將圖像文件寫入圖像數(shù)組(矩陣)
imwrite(a,filename,fmt)3.調(diào)用imshow函數(shù)顯示圖像
Imshow(I,N)
4.圖像的灰度平均值。調(diào)用ave=mean2(I)計算圖像的均值 5.協(xié)方差矩陣。調(diào)用Cfg=COV(f,g)計算圖像f和圖像g的協(xié)方差矩陣 圖像的灰度標(biāo)準(zhǔn)差。調(diào)用SD=STD2(I)的灰度標(biāo)準(zhǔn)差 7.圖像的相關(guān)系數(shù)。調(diào)用函數(shù)rfg=CORR2(f,g)計算大小相等的兩幅圖像f和g的相關(guān)系數(shù)
二、圖像及統(tǒng)計數(shù)據(jù)
原圖像的平均灰度值= 77.5170
灰度標(biāo)準(zhǔn)差= 44.2095 灰度圖像的平均灰度值= 74.4516
灰度標(biāo)準(zhǔn)差=37.1236 反白圖像的平均灰度值= 180.5484
灰度標(biāo)準(zhǔn)差= 37.1236 灰度圖像和反白圖像的相關(guān)系數(shù)是
三、程序
I=imread('football.jpg');subplot(2,2,1);imshow(I);J=rgb2gray(I);subplot(2,2,2);imshow(J);Ave=mean2(J)Ave =
74.4516 SD=std2(double(J))SD =
37.1236 s=size(J);all_white=255*ones(s(1),s(2));all_white_uint8=uint8(all_white);K=imsubtract(all_white_uint8,J);subplot(2,2,3);imshow(K);imwrite(K,'football_iverse.jpg');
四、思考題
1.圖像統(tǒng)計特征讓我們更加了解圖像的變換,使圖像處理更加方便 2.五、心得體會
這次試驗,我學(xué)會了使用marlab中的圖像處理工具箱中的函數(shù),對每個圖像處理函數(shù)的功能都有了深入的認(rèn)識。同時,我掌握了MATLAB的基本應(yīng)用方法,對圖像文件的讀/寫的方法有了初步認(rèn)識。總之這次試驗讓我對MATLAB的圖像處理有了一點學(xué)習(xí),為更好地學(xué)習(xí)數(shù)字圖像處理打下了一定的基礎(chǔ)。
第三篇:《數(shù)字圖像處理》實驗教案
數(shù) 字 圖 像 處 理
實 驗 指 導(dǎo) 書
信息科學(xué)與工程學(xué)院電子系
二○○六年
前
言
數(shù)字圖像處理是研究數(shù)字圖像處理的基本理論、方法及其在智能化檢測中應(yīng)用的學(xué)科,是電子信息類本科專業(yè)的專業(yè)課。
本課程側(cè)重于數(shù)字圖像的基本處理,并對圖像分析的基本理論和實際應(yīng)用進(jìn)行系統(tǒng)介紹;目的是使學(xué)生系統(tǒng)掌握數(shù)字圖像處理的基本概念、原理和實現(xiàn)方法,學(xué)習(xí)圖像分析的基本理論、典型方法和實用技術(shù),具備解決通信領(lǐng)域的圖像相關(guān)問題的初步能力,為今后的研究與開發(fā)打下扎實的基礎(chǔ)。
目
錄
實驗一 常用的圖像文件格式與格式轉(zhuǎn)換和圖像矩陣的顯示方實驗二 實驗三
法 …………………………………………………………2
傅立葉變換……………………………………………………4 圖像增強及編程處理…………………………………………5
實驗一 常用的圖像文件格式與格式轉(zhuǎn)換和圖像矩陣的顯示方法
1. 實驗?zāi)康?/p>
熟悉Matlab語言的初步使用;
熟悉常用的圖像文件格式與格式轉(zhuǎn)換;
熟悉圖像矩陣的顯示方法(灰度、索引、黑白、彩色); 熟悉圖像矩陣的格式轉(zhuǎn)換 2. 實驗內(nèi)容
練習(xí)圖像讀寫命令imread和imwrite并進(jìn)行圖像文件格式間的轉(zhuǎn)換。特別是索引圖像與1,4,8,16比特圖像的存儲與轉(zhuǎn)換。
熟悉下列模塊函數(shù) Image file I/O.imread
-Read image file.imwrite
Create and display image
imagesc
Make movie from multiframe indexed image.imshow
-Display image.subimage
-Display multiple images in single figure.truesize
-Adjust display size of image.warp
-Display image as texture-mapped surface.zoom
-Zoom in and out of image or 2-D plot.3. 實驗步驟
a.Load cameraman.tif image from your hard disk(using function imread).b.Show the image in a figure window(using function image or imshow).c.Draw a brightness bar on the right side of the image(using function colorbar).d.Get image data from the current figure(axes)(using function getimage).e.Show the gray level of the image between 64 to 128(using function imagesc).f.Make a movie from a 4-D image(load mri, make the movie by immovie, then show movie by function movie).object.g.Draw the cameraman image on a cylinder(using function warp).Question: how to show the cameraman like this
Requirement: write a report to do the experiment from a to g.實驗二
傅立葉變換
1.實驗?zāi)康?/p>
熟悉傅立葉變換的概念和原理; 理解Fourier變換的意義。
2.實驗內(nèi)容
用Fourier變換算法對圖像進(jìn)行Fourier變換; 評價人眼對圖像幅頻特性和相頻特性的敏感度。
3.實驗步驟
<1>產(chǎn)生如圖所示圖像f1(x,y)(128×128 大小,暗處=0,亮處=255),用MATLAB中的fft2函數(shù)對其進(jìn)行FFT;
<2>同屏顯示原圖f1和FFT(f1)的幅度譜圖;
<3>若令f2(x,y)=(-1)
x?y f1(x,y),重復(fù)以上過程,比較兩幅圖像的幅度譜的異同,簡述理由;
<4>若將f2(x,y)順時針旋轉(zhuǎn)45度得到f3(x,y),試顯示FFT(f3)的幅度譜,并與FFT(f2)的幅度譜進(jìn)行比較;
<5>評價人眼對圖像幅頻特性和相頻特性的敏感度。
4.實驗報告
<1>簡述實驗?zāi)康募霸恚?/p>
<2>給出實驗代碼,并加以注釋; <3>對實驗現(xiàn)象加以說明和討論。
實驗三
圖像增強及編程處理
1. 實驗?zāi)康?/p>
觀察數(shù)字圖像增強的效果; 熟悉數(shù)字圖像增強的一般方法;
掌握數(shù)字圖像增強的一般方法的Matlab編程實現(xiàn)。2. 實驗內(nèi)容
使用Photoshop觀察數(shù)字圖像增強的效果; 練習(xí)和掌握圖像增強的Matlab編程。
熟悉下列模塊函數(shù) Image enhancement.histeq
Adust imae intensity values or colormap.Image noising.imnoise
-Add noise to an image.Image filtering
medfilt2
-Perform 2-D median filtering.ordfilt2
Perform 2-D adaptive noise-removal filtering.3. 實驗步驟
<1> 使用Photoshop觀察數(shù)字圖像增強的效果 a.對比度增強
1)在Photoshop中打開一黑白灰度圖像文件。
2)在圖像菜單中選直方圖項,觀察原始圖像的直方圖。
3)在圖像菜單調(diào)整子菜單中選亮度/對比度項,調(diào)節(jié)對比度滑塊,觀察圖像變化。
4)在圖像菜單中選直方圖項,觀察處理后圖像的直方圖,并同(2)中的直方圖比較。b.灰度變換
1)在Photoshop中打開一黑白灰度圖像文件。
2)在圖像菜單中選直方圖項,觀察原始圖像的直方圖。3)在圖像菜單調(diào)整子菜單中選反相項,觀察圖像變化。
4)在圖像菜單中選直方圖項,觀察處理后圖像的直方圖,并同(2)中的直方圖比較。5)畫出灰度變換曲線。
6)在編輯菜單中選返回項,恢復(fù)原始圖像。
7)在圖像菜單調(diào)整子菜單中閾值項,調(diào)節(jié)閾值色階滑塊,觀察圖像變化。
8)在圖像菜單中選直方圖項,觀察處理后圖像的直方圖,并同(2)中的直方圖比較。9)畫出灰度變換曲線。
c.直方圖均衡化
1)在Photoshop中打開一黑白灰度圖像文件。
2)在圖像菜單中選直方圖項,觀察原始圖像的直方圖。3)在圖像菜單調(diào)整子菜單中選色調(diào)均化項,觀察圖像變化。
4)在圖像菜單中選直方圖項,觀察處理后圖像的直方圖,并同(2)中的直方圖比較。
d.圖像平滑
1)在Photoshop中打開一黑白灰度圖像文件。
2)在圖像菜單中選直方圖項,觀察原始圖像的直方圖。
3)在濾鏡菜單模糊子菜單中選進(jìn)一步模糊項,觀察圖像變化。
4)在圖像菜單中選直方圖項,觀察處理后圖像的直方圖,并同(2)中的直方圖比較。5)在編輯菜單中選返回項,恢復(fù)原始圖像。
6)在濾鏡菜單模糊子菜單中選高斯模糊項,觀察圖像變化。
7)在圖像菜單中選直方圖項,觀察處理后圖像的直方圖,并同(2)中的直方圖比較。8)在Matlab Help菜單中, 選Demos項。
9)打開ToolboxesImage Processing項,選Noise Reduction Filtering,并運行。
10)選圖像Blood、噪聲類型Salt & Pepper、濾波器類型Median、鄰域3x3,比較原始圖像、受噪聲污染圖像、濾波后圖像。11)改變參數(shù),重做(10)。
12)選其他圖像,重做(10)-(11)。
13)思考何種濾波器對抑制何種類型噪聲更有效,鄰域大小對抑制噪聲效果及圖像模糊程度的影響。
<2> 圖像增強的Matlab編程
a.Load cameraman.tif image from your hard disk(using function imread).b.Show the image in a figure window.c.Show the histogram of the image(using function imhist).d.Enhance the contrast of the image using histogram equalization.e.Show the histogram of the image after processing.f.Compare the qualities of two images and makes a discussion about them.g.Add noises, such as gaussian, salt&pepper, speckle noise into the image respectively.Compare with the influence of the different Means and Variance.h.Remove the added noise from the image by function medfilt2, ordfilt2 and wiener2 respectively.Compare the qualities of the original images with the processed images and discuss the effect of the methods.Requirement:
Write a report to do the experiment.Make sure the report includes the discussion about the experiment.If the report just is a copy from others, the report will have a zero mark.
第四篇:數(shù)字圖像處理上機實驗(02091008)
數(shù)字圖像處理上機作業(yè)
數(shù)字圖像處理上機作業(yè)
1.產(chǎn)生右圖所示亮塊圖像 f1(x,y)(128×128大小,暗處=0,亮處=255),對其進(jìn)行FFT:
(1)同屏顯示原圖f1和FFT(f1)的幅度譜圖;
圖像:
(2)若令f2(x,y)=(-1)f1(x,y),重復(fù)以上過程,比較二者幅度譜的異同,簡述理由;(3)若將f2(x,y)順時針旋轉(zhuǎn)45度得到f3(x,y),試顯示FFT(f3)的幅度譜,并與FFT(f2)的幅度譜進(jìn)行比較。
x+y
結(jié)論:不同點:f2的頻譜是對f1頻譜的移位,它時f1的頻譜從原點(0,0)移到了中心(64,64),而得到了一個完整的頻譜。
相同點:頻譜的實質(zhì)沒有改變,幅度等都沒有發(fā)生變化。
(3)若將f2(x,y)順時針旋轉(zhuǎn)45度得到f3(x,y),試顯示FFT(f3)的幅度譜,并與FFT(f2)的幅度譜進(jìn)行比較。
源程序: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));% f2(x,y)=(-1)^(x+y)* f1(x,y)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,3,1);imshow(f2);f3=imrotate(f2,-45,'bilinear');%將f2順時針旋轉(zhuǎn)45度 subplot(1,3,2);imshow(fft2(f2));%顯示f2的頻譜 subplot(1,3,3);imshow(fft2(f3));%顯示f3的頻譜
結(jié)論:均衡化后的直方圖并非完全均勻分布的原因:因為圖像的像素個數(shù)和灰度等級均為離散值,而且均衡化后使灰度級并歸。
2.對256?256大小、256級灰度的數(shù)字圖像lena進(jìn)行頻域的理想低通、高通濾波,同屏顯示原圖、幅度譜圖和低通、高通濾波的結(jié)果圖。
源代碼: figure(1);fid=fopen('d:imglena.img','r');data=(fread(fid,[256,256],'uint8'))';subplot(2,2,1)imagesc(data);colormap(gray);title('LENA','Color','r');subplot(2,2,2);imshow(fft2(data));s=fftshift(fft2(data));[M,N]=size(s);%分別返回s的行數(shù)到M中,列數(shù)到N中 n=2;%對n賦初值 %GLPF濾波,d0=5,15,30(程序中以d0=30為例)d0=30;%初始化d0 n1=floor(M/2);%對M/2進(jìn)行取整 n2=floor(N/2);%對N/2進(jìn)行取整 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濾波函數(shù)
s(i,j)=h*s(i,j);%GLPF濾波后的頻域表示 end end s=ifftshift(s);%對s進(jìn)行反FFT移動
%對s進(jìn)行二維反離散的Fourier變換后,取復(fù)數(shù)的實部轉(zhuǎn)化為無符號8位整數(shù) s=uint8(real(ifft2(s)));subplot(2,2,3);%創(chuàng)建圖形圖像對象 imshow(s);p=fftshift(fft2(data));[M,N]=size(p);%分別返回p的行數(shù)到M中,列數(shù)到N中 n=2;%對n賦初值 %GLPF濾波d1=30 d1=30;%初始化d1 n3=floor(M/2);%對M/2進(jìn)行取整 n4=floor(N/2);%對N/2進(jìn)行取整 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濾波函數(shù)
p(i,j)=h1*p(i,j);%GHPF濾波后的頻域表示 end end p=ifftshift(p);%對p進(jìn)行反FFT移動
%對s進(jìn)行二維反離散的Fourier變換后,取復(fù)數(shù)的實部轉(zhuǎn)化為無符號8位整數(shù) p=uint8(real(ifft2(p)));subplot(2,2,4);%創(chuàng)建圖形圖像對象 imshow(p);
3.對給定的兩種128?128、256級灰度的數(shù)字圖像(圖像磁盤文件名分別為Fing_128.img(指紋圖)和Cell_128.img(顯微醫(yī)學(xué)圖像)進(jìn)行如下處理:
(1)對原圖像進(jìn)行直方圖均衡化處理,同屏顯示處理前后圖像及其直方圖,比較異同,并回答為什么數(shù)字圖像均衡化后其直方圖并非完全均勻分布。
異同:由于原圖像中目標(biāo)物的灰度主要集中于低亮度部分,而且象素總數(shù)比較多,經(jīng)過直方圖均衡后,目標(biāo)物的所占的灰度等級得到擴展,對比度加強,使整個圖像得到增強。
數(shù)字圖像均衡化后其直方圖并非完全均勻分布的原因:由于原圖像中目標(biāo)物的灰度主要集中于低亮度部分,而且象素總數(shù)比較少,而所占的灰度等級比較多,因此圖像的對比度比較好,亮度比較大,整體圖像清晰。經(jīng)過直方圖均衡后,目標(biāo)物的所占的灰度等級被壓縮,對比度減弱,反而使目標(biāo)物變的難以辨認(rèn)。
數(shù)字圖像均衡化后,其直方圖并非完全均勻分布,這是因為圖像的象素個數(shù)和灰度等級均為離散值;而且均衡化使灰度級并歸,因此,均衡化后,其直方圖并非完全均勻分布。
源代碼: figure(1);fid=fopen('D:imgcell_128.img','r');
%打開無格式文件 data1=(fread(fid,[128,128],'uint8'))';%將打開的文件讀入到data1 subplot(4,2,1);
%將figure(1)分成4*2的8個子窗口, data11=uint8(data1);imshow(data11);%圖象顯示
title('CELL','Color','b');
%加標(biāo)題 subplot(4,2,2);title('原圖像直方圖');imhist(data11);subplot(4,2,3);
%取第二個子窗口
data2=uint8(data1);%將灰度圖象轉(zhuǎn)換成uint8格式 b=histeq(data2);
%直方圖均衡化
imshow(b,256);
%顯示均衡化圖象,256可缺省 title('均衡化','Color','b');
subplot(4,2,4);imhist(b);title('均衡化后圖像直方圖');subplot(4,2,5)fid=fopen('d:imgfing_128.img','r');%打開無格式文件
data3=(fread(fid,[128,128],'uint8'))';%將打開的文件讀入到data3 data31=uint8(data3);
%將灰度圖象轉(zhuǎn)換成uint8格式 imshow(data31);
%顯示灰度圖象 title('FING','Color','b');subplot(4,2,6)imhist(data31);title('原圖像直方圖');subplot(4,2,7);
data4=uint8(data3);%將灰度圖象轉(zhuǎn)換成uint8格式 d=histeq(data4);
%直方圖均衡化
imshow(d,256);
%顯示均衡化圖象,256可缺省 title('均衡化','Color','b');
subplot(4,2,8);imhist(d);title('均衡化后原圖像直方圖');(2)對原圖像加入高斯噪聲,用4-鄰域平均法平滑加噪聲圖像(圖像四周邊界不處理,下同),同屏顯示原圖像、加噪圖像和處理后的圖像。
① 不加門限;
② 加門限 T?2f(m,n),(其中f(m,n)?
1N2??f(i,j))
ij
源代碼: % CELL figure(2);fid=fopen('D:imgcell_128.img','r');
%打開無格式文件
data1=(fread(fid,[128,128],'uint8'))';%將打開的文件讀入到data1 I=uint8(data1);I1=imnoise(I,'gaussian');%加乘性噪聲 H1=[0 1 0;1 0 1;0 1 0]/4;%4×4領(lǐng)域模板 J=imfilter(I,H1);%領(lǐng)域平均
subplot(2,4,1),imshow(I);%顯示圖像I title('原圖像');subplot(2,4,2),imshow(I1);title('加噪聲后圖像');subplot(2,4,3),imshow(J);
%不加門限平滑 title('不加門限平滑后圖像');%加門限后濾波
T= 2*sum(I1(:))/128^2;im_T = zeros(128,128);for i = 1:128
for j = 1:128
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(2,4,8);imshow(im_T);title('加門限后');4.(1)用Laplacian銳化算子(分??1和??2兩種情況)對256?256大小、256級灰度的數(shù)字圖像lena進(jìn)行銳化處理,顯示處理前、后圖像。
源代碼:
%laplacian算子銳化
I=imread('D:imgLENA256.bmp');% 讀入原圖像 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銳化圖像');
(2)若令
g1(m,n)?f(m,n)???2f,g2(m,n)?4?f(m,n)??[f(m?1,n)?f(m?1,n)?f(m,n?1)?f(m,n?1)
?f(m,n?1)?f(m,n?1)]
則回答如下問題:
① f(m,n)、g1(m,n)和g2(m,n)之間有何關(guān)系? ② g2(m,n)代表圖像中的哪些信息? ③ 由此得出圖像銳化的實質(zhì)是什么?
①因為g2(m,n)????2f(m,n),所以f(m,n)、g1(m,n)和g2(m,n)之間有以下關(guān)系:
g1(m,n)?f(m,n)?g2(m,n)
②g2(m,n)代表了原圖像中的二階梯度信息;g1(m,n)是邊緣增強后的數(shù)字圖像; ③由此可以得出:圖像銳化的實質(zhì)是將原圖像與梯度信息疊加(梯度信息所占的比例由,相當(dāng)于對目標(biāo)物的邊緣進(jìn)行了增強。?的大小決定,?值越大則梯度信息所占的比例越大)
5.分別利用Roberts、Prewitt和Sobel邊緣檢測算子,對256?256大小、256級灰度的數(shù)字圖像lena進(jìn)行邊緣檢測,顯示處理前、后圖像。圖像:
源代碼:
I=imread('D:imgLENA256.bmp');% 讀入原圖像 figure(1)%Roberts梯度法銳化
subplot(2,2,1);imshow(I);title('原始圖像');J=double(I);[IX,IY]=gradient(J);%計算梯度 A=sqrt(IX.*IX+IY.*IY);subplot(2,2,2);imshow(A,[]);title('Roberts梯度法銳化圖像');%Prewitt算子銳化
S=imfilter(I,fspecial('Prewitt'));subplot(2,2,3);imshow(S);title('Prewitt算子銳化圖像');%Sobel算子銳化
S=imfilter(I,fspecial('sobel'));subplot(2,2,4);imshow(S);title('Sobel算子銳化圖像');
6、學(xué)習(xí)數(shù)字圖像處理課程的心得體會,該課程在哪些方面需要改進(jìn),對該課程或者任課老師有哪些意見或建議。
通過對數(shù)字圖像處理課程的認(rèn)真學(xué)習(xí),在課堂聽課和課余實踐中了解了數(shù)字圖像的基礎(chǔ)知識,培養(yǎng)了一定的軟件編程能力,在努力完成課堂作業(yè)的同時,發(fā)現(xiàn)了對圖像方面的興趣。老師認(rèn)真負(fù)責(zé),布置合理的作業(yè)。但希望能夠通過更加豐富的授課方式,提高更多人學(xué)習(xí)該門課程的興趣和主動性。也同樣希望老師能夠加強點名和作業(yè)的驗收,督促學(xué)生更加認(rèn)真的學(xué)習(xí)知識。
第五篇:數(shù)字圖像處理實驗 完整代碼(原創(chuàng)精心整理)
實驗一圖象灰度變換(2學(xué)時)
一、實驗?zāi)康模?/p>
理解數(shù)字圖象處理的基本過程,掌握常用圖象灰度變換算法,觀察圖像圖象灰度變換的結(jié)果,加深對數(shù)字圖象基本概念的理解。
二、實驗內(nèi)容:
1、灰度線性變換
變換函數(shù)為:s = a r + b設(shè)計程序,實現(xiàn)(a>1,b=0)、(00)和(a=1,b<0)等情況下的灰度變換處理,并比較處理前后的圖象效果。
2、圖象二值化
設(shè)計程序,實現(xiàn)圖象的二值化。并給出三種門限下的處理結(jié)果。
3、負(fù)象變換
設(shè)計程序,實現(xiàn)圖象的反轉(zhuǎn)操作(負(fù)象變換),并比較處理前后的圖象結(jié)果。
4、灰度非線性變換(選做內(nèi)容)
設(shè)計程序,實現(xiàn)圖象的指數(shù)變換和對數(shù)變換。
三、實驗步驟:
1、獲取實驗用圖像:使用imread函數(shù)將圖像讀入Matlab,用size函數(shù)(或imfinfo函數(shù))獲取圖象大小。
2、產(chǎn)生灰度變換函數(shù):s = a r + b
用imshow函數(shù)分別觀察在(a>1,b=0)、(00)和(a=1,b<0)四情況下處理前后的結(jié)果。適當(dāng)選擇參數(shù),使處理結(jié)果達(dá)到較好的效果。記錄下所對應(yīng)的參數(shù)。
3、用imwrite函數(shù)保存處理圖象結(jié)果。
4、設(shè)計門限化方法實現(xiàn)圖象的二值化的變換函數(shù),并進(jìn)行程序設(shè)計實現(xiàn)。分別選擇三個門限值,觀察處理結(jié)果。
5、設(shè)計實現(xiàn)反轉(zhuǎn)操作的變換函數(shù),并進(jìn)行程序設(shè)計實現(xiàn)。觀察處理結(jié)果。
6、分別設(shè)計實現(xiàn)圖象的指數(shù)變換和對數(shù)變換的變換函數(shù),參數(shù)自己選定,并比較處理前后的圖象結(jié)果。(選做內(nèi)容)
四、實驗報告要求:
畫出算法的規(guī)范化程序設(shè)計流程圖。用plot等函數(shù)生成各類灰度變換函數(shù)曲線,用imshow函數(shù)顯示處理前后圖象。在實驗報告中提交原圖像和各種變換函數(shù)的曲線,以及按各種變換函數(shù)處理后的圖像,并進(jìn)行實驗結(jié)果分析。選做內(nèi)容可不寫入報告中。
實驗一代碼
R=imread('實驗1原圖.jpg');[m,n]=size(R)figure, imshow(R);title('原圖1');
S1=R*3;figure, imshow(S1);title('a=3,b=0');imwrite(S1,'1.21.jpg');
N=im2double(R);
S2=N*0.5;figure, imshow(S2);title('a=0.5,b=0');imwrite(S2,'1.22.jpg');
S3=R+10;figure, imshow(S3);title('a=1,b=10');imwrite(S3,'1.23.jpg');
S4=N+0.5;figure, imshow(S4);title('a=1,b=0.5');imwrite(S4,'1.24.jpg');
X1=R>64;figure, imshow(X1);title('門限值為64');imwrite(X1,'1.41.jpg');
X2=R>128;figure, imshow(X2);title('門限值為128');imwrite(X2,'1.42.jpg');
X3=R>192;figure, imshow(X3);title('門限值為192');imwrite(X3,'1.43.jpg');
Y=255-R;figure, imshow(Y);title('反轉(zhuǎn)后的圖像');imwrite(Y,'1.51.jpg');
Z1=N.^0.6;figure, imshow(Z1);title('指數(shù)變換后的圖像');imwrite(Z1,'1.61.jpg');
Z2=log(N+1)%Z3=im2uint8(Z2)figure,imshow(Z3);figure,imshow(Z2,[]);title('對數(shù)變換后的圖像');imwrite(Z2,'1.62.jpg');
實驗二圖象直方圖及均衡(2學(xué)時)
一、實驗?zāi)康模?/p>
理解圖象灰度直方圖的概念,掌握圖象直方圖的計算方法;掌握直方圖均衡化圖象增強技術(shù),理解均衡化的處理過程。
二、實驗內(nèi)容:
1、圖象直方圖
設(shè)計程序,計算圖象直方圖。
2、直方圖均衡化
設(shè)計程序,實現(xiàn)圖象直方圖均衡化處理,并比較處理前后圖象。
三、實驗步驟:
1、獲取實驗用圖像:使用imread函數(shù)將圖像讀入Matlab用size函數(shù)(或imfinfo函數(shù))獲取圖象大小。
2、計算圖象的灰度直方圖,并用plot等函數(shù)生成灰度直方圖。
3、設(shè)計直方圖均衡化算法,并進(jìn)行程序設(shè)計實現(xiàn)。
4、根據(jù)直方圖均衡化的灰度變換函數(shù)實現(xiàn)圖象灰度的映射變換,獲得均衡化的圖象結(jié)果。
5、計算均衡化圖象的灰度直方圖,并用plot等函數(shù)生成灰度直方圖。
6、用imwrite函數(shù)保存處理圖象結(jié)果。
四、實驗報告要求:
畫出直方圖均衡化算法的規(guī)范化程序設(shè)計流程圖。用imshow函數(shù)顯示處理前后圖象,用plot等函數(shù)生成原始圖象和處理圖象的灰度直方圖,并進(jìn)行實驗結(jié)果分析。
實驗二代碼
X=imread('實驗2原圖.jpg');[m,n]=size(X)h=zeros(256);for i=1:256
t=(X==(i-1));h(i)=sum(t(:));end a=0:255;figure,imshow(X);title('原圖2');figure,bar(a,h);title('原圖直方圖');num=numel(X);c=cumsum(h);Y=round(c/num*256);W=zeros(m,n);for i=1:256
W1=Y(i)*(X==i-1);
W=W1+W;
W=round(W);end for i=1:256
t=(W==(i-1));h(i)=sum(t(:));end W=uint8(W);figure,imshow(W);title('均衡化后的圖');figure,bar(a,h);title('均衡化后的直方圖');imwrite(W,'2.6.jpg');
實驗三圖像中值濾波(2學(xué)時)
一、實驗?zāi)康模?/p>
進(jìn)一步加深理解和掌握中值濾波的原理和具體算法。能解釋用大小和形狀不同的滑動窗口進(jìn)行中值濾波后圖像所呈現(xiàn)的一些特征。
二、實驗內(nèi)容:
1、矩形鄰域中值濾波設(shè)計程序,實現(xiàn)3×3鄰域中值濾波。比較處理前后圖像效果。
2、十字形中值濾波(選做)設(shè)計程序,實現(xiàn)5×5十字形中值濾波。比較處理前后圖像效果。
三、實驗原理:
對于給定的n個數(shù)值{a1, a2, …an}, 將它們按大小有序排列。當(dāng)n為奇數(shù)時,位于中間位置的那個數(shù)值稱為這n個數(shù)值的中值。記作 med [a1, a2, …an] 設(shè)x為M×N待處理圖像,經(jīng)窗口為Wn的中值濾波后,被處理像點(i, j)的輸出為:)],([),(),(jixmedjiyjiWn= 式中W(i, j)表示點(i, j)的鄰域,它含有n個像素。
n
四、實驗步驟:
1)讀入圖像;2)創(chuàng)建合適的滑動窗口;3)將該窗口內(nèi)的圖像灰度值重新排序;4)將排序后位于中間的數(shù)值作為中值;5)用中值取代被處理像素的原灰度值;6)滑動窗口到下一個位置,重復(fù)3)~5)。
五、實驗報告要求:
按統(tǒng)一規(guī)定的實驗報告格式提交報告。畫出算法的規(guī)范化程序設(shè)計流程圖。應(yīng)包含程序清單,處理前后的圖像特征比較及編程的心得體會(指編程過程中的難點及如何克服它的)。
實驗三代碼
1.將下列函數(shù)保存成文件mymidfilt.m function B=mymidfilt(file_name, block_size)A = imread(file_name);[m,n] = size(A);
k = floor(block_size/2);
A2 = zeros(m+2*k,n+2*k);A2(k+1:m+k,k+1:n+k)= A;
%four corners
A2(1:k,1:k)= A(1,1);% Upper left corner.A2(1:k,n+k+1:n+2*k)= A(1,n);% Upper right corner.A2(m+k+1:m+2*k,1:k)= A(m,1);% Lower left corner.A2(m+k+1:m+2*k,n+k+1:n+2*k)= A(m,n);% Lower right corner.% four sides for i = 1:k
A2(i,k+1:n+k)= A(1,1:n);% Upper.A2(m+k+i,k+1:n+k)= A(m,1:n);% Lower.A2(k+1:m+k,i)= A(1:m,1);% Left.A2(k+1:m+k,n+k+i)= A(1:m,n);% Right.end;
B=zeros(m,n);
pixel_block = zeros(1,block_size^2);
for i = 1:m for j = 1:n
k = floor(block_size/2);
pixel_block = reshape(A2(i:i+2*k,j:j+2*k),1,block_size^2);sorted_block = sort(pixel_block);median_position = ceil(block_size^2 / 2);
block_median = sorted_block(median_position);B(i,j)= block_median;end;end;
B = uint8(B);
2.調(diào)用函數(shù)mymidfilt
R=imread('實驗3原圖.jpg');figure, imshow(R);title('原圖3');X=mymidfilt('實驗3原圖.jpg', 5);figure, imshow(X);title('中值濾波后的圖像');imwrite(X,'3.1.jpg');
實驗三選作部分代碼
A = imread('實驗3原圖.jpg');A=im2double(A);[m,n]=size(A);block_size=5;k = floor(block_size/2);
A2 = zeros(m+2*k,n+2*k);A2(k+1:m+k,k+1:n+k)= A(1:m,1:n);
%four corners A2(1:k,1:k)= A(1,1);
% Upper left corner.A2(1:k,n+k+1:n+2*k)= A(1,n);
% Upper right corner.A2(m+k+1:m+2*k,1:k)= A(m,1);
% Lower left corner.A2(m+k+1:m+2*k,n+k+1:n+2*k)= A(m,n);% Lower right corner.% four sides for i = 1:k
A2(i,k+1:n+k)= A(1,1:n);
% Upper.A2(m+k+i,k+1:n+k)= A(m,1:n);
% Lower.A2(k+1:m+k,i)= A(1:m,1);
% Left.A2(k+1:m+k,n+k+i)= A(1:m,n);
% Right.end;
B=zeros(m,n);B0=zeros(1,9);B1 = zeros(1,block_size^2);
for i = 1:m for j = 1:n
k = floor(block_size/2);
B1= reshape(A2(i:i+2*k,j:j+2*k),1,block_size^2);
B0=[B1(3)B1(8)B1(11)B1(12)B1(13)B1(14)B1(15)B1(18)B1(23)];
B0= sort(B0);
block_median = B0(5);B(i,j)=block_median;end;end;figure,imshow(B);title('5X5十字變換后圖像');imwrite(B,'3.2.jpg');
實驗四圖像空域銳化增強(2學(xué)時)
一、實驗?zāi)康?/p>
進(jìn)一步加深理解和掌握圖像銳化的的概念,掌握常用空域銳化增強技術(shù)。觀察和理解圖像銳化處理對加強圖像中的目標(biāo)邊緣和圖像細(xì)節(jié)的作用。理解圖象銳化增強的處理過程和特點。
二、實驗內(nèi)容
1、一階微分銳化增強
設(shè)計程序,分別實現(xiàn)Roberts、Sobel、Priwitt算子的銳化處理。觀察處理前后圖象效果,分析實驗結(jié)果和算法特點。
2、拉普拉斯銳化增強
設(shè)計程序,實現(xiàn)拉普拉斯圖像和原始圖像疊加的增強處理,即
觀察處理前后圖像效果,分析實驗結(jié)果和算法特點。
三、實驗原理:
圖像銳化技術(shù)的基本方法是對圖像進(jìn)行微商處理,并且將運算結(jié)果與原圖像疊加。圖像的梯度模值反映了圖像灰度變化的速率,它包含了邊緣及細(xì)節(jié)信息。我們可以梯度模值的計算作為算子,這個算子稱為梯度算子。常用的有Roberts、Sobel、Priwitt、Laplace等算子。
四、實驗要求:
按統(tǒng)一規(guī)定的實驗報告格式提交報告。應(yīng)包含程序清單,處理前后的圖像特征比較及編程的心得體會(指編程過程中的難點及如何克服它的)。
實驗四代碼
1.將下列函數(shù)保存成move_mask1.m function B=move_mask1(filename,B1,B2)R=imread(filename);R1=rgb2gray(R);[m,n]=size(R1);R2=zeros(m+2,n+2);
R2(2:m+1,2:n+1)= R1(1:m,1:n);R2(1,1)= R1(1,1);R2(1,n+2)= R1(1,n);R2(m+2,1)= R1(m,1);R2(m+2,n+2)= R1(m,n);
R2(1,2:n+1)= R1(1,1:n);R2(m+2,2:n+1)= R1(m,1:n);R2(2:m+1,1)= R1(1:m,1);R2(2:m+1,n+2)= R1(1:m,n);
D0=zeros(3,3);D1=zeros(m,n);B= zeros(m,n);for i = 1:m;for j = 1:n;
D0 = R2(i:i+2,j:j+2);C1=B1.*D0;C2=B2.*D0;
D1(i,j)=abs(sum(sum(C1)))+abs(sum(sum(C2)));B(i,j)=D1(i,j);end;end;
2.將下列函數(shù)保存成move_mask2.m function B=move_mask2(filename,B1)R=imread(filename);[m,n]=size(R);R2=zeros(m+2,n+2);R2(2:m+1,2:n+1)= R(1:m,1:n);R2(1,1)= R(1,1);R2(1,n+2)= R(1,n);R2(m+2,1)= R(m,1);R2(m+2,n+2)= R(m,n);
R2(1,2:n+1)= R(1,1:n);R2(m+2,2:n+1)= R(m,1:n);R2(2:m+1,1)= R(1:m,1);R2(2:m+1,n+2)= R(1:m,n);
D0 = zeros(3,3);D1= zeros(m,n);
for i = 1:m;for j = 1:n;
D0 = R2(i:i+2,j:j+2);C1=B1.*D0;D1(i,j)=sum(sum(C1));B(i,j)=D1(i,j);end;end;3.調(diào)用函數(shù)move_mask1和move_mask2 B1= [-1-2-1;0 0 0;1 2 1];%sobel算子 B2= [-1 0 1;-2 0 2;-1 0 1];%sobel算子 B3= [-1 0 1;-1 0 1;-1 0 1];%prewitt算子 B4= [1 1 1;0 0 0;-1-1-1];%prewitt算子 B5= [0 0 0;0-1 0;0 0 1];%robert算子 B6= [0 0 0;0 0-1;0 1 0];%robert算子 B7= [0 1 0;1-4 1;0 1 0];%拉普拉斯算子
R1=imread('實驗4原圖1.jpg');figure, imshow(R1);title('實驗4原圖1');R2=imread('實驗4原圖2.jpg');figure, imshow(R2);title('實驗4原圖2');
E0= move_mask1('實驗4原圖1.jpg',B1,B2);E1= move_mask1('實驗4原圖1.jpg',B3,B4);E2= move_mask1('實驗4原圖1.jpg',B5,B6);E3= move_mask2('實驗4原圖2.jpg',B7);
[m,n]=size(R2);for i = 1:m;for j = 1:n;E4(i,j)=R2(i,j)-E3(i,j);%普拉斯圖像和原始圖像疊加 end;end;
figure, imshow(E0,[]);title('sobel算子銳化處理后的圖像');figure, imshow(E1,[]);title('prewitt算子銳化處理后的圖像');figure, imshow(E2,[]);title('robert算子銳化處理后的圖像');figure, imshow(E3,[]);title('拉普拉斯圖像');figure, imshow(E4,[]);title('普拉斯圖像和原始圖像疊加后的圖像');
實驗五圖像頻域濾波(4學(xué)時)
一、實驗?zāi)康模?/p>
進(jìn)一步加深理解和掌握圖像頻域的濾波器設(shè)計方法,學(xué)會在圖像的頻域中觀察和分析干擾信號的頻率分量在什么位置。
二、實驗內(nèi)容:
設(shè)計程序消除周期性噪聲干擾信號。要求在圖像頻域中設(shè)計一Butterworth陷波器,其階數(shù)n和陷波器半徑D由學(xué)生根據(jù)上課所學(xué)理論知識通過自己的探索得出,從而加深
0理解二者對濾波器性能的影響。
三、實驗原理:
n階Butterworth 陷波器的傳遞函數(shù)為:
其中D為陷波器半徑,D,D分別為點(u,v)到陷波器中心(u,v)和(-u,-v)0
0
0
0的距離。該傳遞函數(shù)使得以陷波器中心為圓心,D0為半徑的圓內(nèi)的所有u,v對應(yīng)的濾波函數(shù)H(u,v)輸出為0,也即將位于(u,v)和(-u,-v)處的頻率成分去除。
0
0
0
0
四、實驗步驟:
獲取圖像的頻域圖像,使用Matlab函數(shù)pixval觀察干擾噪聲的頻率成分,找出所有的(u,v)對,針對每一個噪聲源分別設(shè)計相應(yīng)的陷波器。濾波完成后將頻域圖像實施00逆變換,即可顯示處理后的圖像。
五、實驗要求:
按統(tǒng)一規(guī)定的實驗報告格式提交報告。應(yīng)包含程序清單,處理前后的圖像特征比較及編程的心得體會(指編程過程中的難點及如何克服它的)。
實驗五代碼
1.將下列函數(shù)保存成mylvbo.m function n=mylvbo(r,u1,v1,u2,v2,d)[m,n]=size(r);Y=fft2(r);G=fftshift(Y);for u=1:m for v=1:n
d1=((u-u1)^2+(v-v1)^2)^(1/2);d2=((u-u2)^2+(v-v2)^2)^(1/2);d3=d;
H(u,v)=1/(1+(d3*d3/(eps+d1*d2))^2);end end
N=G.*H;
n1=ifft2(N);n=abs(n1);
2.調(diào)用函數(shù)mylvbo.m r=imread('實驗5原圖.tif');[m,n]=size(r);imshow(r);title('實驗5原圖象');y1=fft2(r);figure,imshow(abs(y1),[]);title('實驗5原圖像頻譜');y2=fftshift(y1);figure,imshow(abs(y2),[]);title('中心移位后的頻譜');impixelinfo;y3=log(1+abs(y2));figure,imshow(y3,[]);title('取對數(shù)變換后的頻譜');impixelinfo;
n1=mylvbo(r,257,247,257,267,3);n2=mylvbo(n1,237,257,277,257,3);n3=mylvbo(n2,217,217,297,297,3);
figure,imshow(n1,[]);title('第一次頻域濾波后圖像');figure,imshow(n2,[]);title('第二次頻域濾波后圖像');figure,imshow(n3,[]);title('第三次頻域濾波后圖像');
imwrite(uint8(n3),'5.tif');