第一篇:數字圖像處理讀書報告11
數字圖像處理讀書報告11
——圖像分割
——錢增磊
前言:由于在圖像的應用當中,我們經常要將感興趣的區域提取出來用來識別等其他用途,這就涉及到一個很關鍵的一個應用,便是圖像的分割。圖像的分割方法有很多,本章將通過四種大的分割方法來講解,分別是基于邊緣檢測的分割,閾值分割,基于區域的分割和形態學分水嶺的分割。然而對于分割算法是基于灰度值的兩個不同性質來進行的,第一便是不連續性,根據這個性質主要的方法是基于邊緣的檢測;另一個便是其相似性原理,后三種方法都是根據一組預定義的準則來進行的相似性分割方法。
一、基于邊緣檢測的分割
1、點與線的檢測
根據灰度級突變的特性,往往我們能夠看到圖像中的點與線,這放在數學中便是一階導數和二階導數的特點。如下式所示:
?f?2f?f?(x)?f(x?1)?f(x)?f??(x)?f(x?1)?f(x?1)?2f(x)2?x?x
從中可以得到三個結論:a.一階導數通常在圖像中產生較粗的邊緣;b.二階導數對精細細節有較強的響應;c.二階導數在灰度斜坡和灰度臺階過渡處會產生雙邊緣響應;d.二階導數的符號可用于確定邊緣的過渡是從亮到暗還是從暗到亮。
所以我們常用的點與線的檢測便對其鄰域使用梯度運算和拉普拉斯算子,從而確定點與線的位置。
2、基于邊緣的檢測
對于邊緣模型主要分為三種,分別為臺階模型、斜坡模型和屋頂邊緣模型,他們可利用梯度和拉普拉斯算子來區分出來。由于在進行二階導數變換的時候,常常會出現雙邊緣響應,那么零灰度軸與二階導數極值間的連線交點便稱為零交叉點,這是個重要特性,對于這個零交叉點可用于尋找到圖像的邊界。
(1)梯度算子:
羅伯特交叉梯度算子:是最早嘗試的具有對角優勢的二維模板,對角相減的原理來構建梯度。
Prewitt算子:利用在模板區域中上下、左右鄰點的灰度差,在邊緣處達到極值來檢測邊緣。
sobel算子:對于上述的中心系數上使用一個權值2,可以平滑圖像,還可以對斜線邊緣進行檢測,原理與上述相似。
Marr-Hildreth邊緣檢測器:采用了灰度變化特性“在一階導數中引起波峰或波谷,或在二階導數中等效地引起零交叉”來檢測邊緣的。該檢測器采用高斯拉普拉斯算子LoG:
?x?y?2???2G(x,y)???e4???222?x2?y22?2
將該濾波器與一幅輸入圖像卷積,尋找其零交叉來確定原圖像的邊緣位置。
g(x,y)?[?2G(x,y)]★f(x,y)
坎尼邊緣檢測器:首先用一個高斯濾波器平滑輸入圖像,也就是進行卷積,然后對輸出的圖像進行計算梯度的幅值和角度,這里采用高斯濾波器主要是因為我們發現最佳臺階邊緣檢測器的一個較好的近似是高斯一階導數。再者我們隊梯度幅值圖像應用非最大抑制,將梯度向量分解為8個方向,分別為相隔45度,對任何一個方向都可以歸納到該8個方向中去。最后我們利用雙閾值處理和連接分析來檢測并連接邊緣。因為在單閾值操作中,閾值設高或者設低都將造成偽邊緣點或者刪除有效邊緣點,于是采用一個低閾值和一個高閾值的方法來克服。對閾值操作想象為創建了兩幅圖像:
gNH(x,y)?gN(x,y)?THgNL(x,y)?gN(x,y)?TL
去除包含的元素,可得到強弱邊緣:gNL(x,y)?gNL(x,y)?gNH(x,y)
3、邊緣連接
上述都是一些理想狀況下產生位于邊緣上的像素集合成連續型,實際上總會由于噪聲和不均勻光照等原因引起邊緣的間斷,造成不連續性,有三種連接的方法。
第一種需要邊緣點的鄰域,給定一個規則強度,如果滿足鄰域內:
|M(s,t)?M(x,y)|?E
則將鄰域中的點作為邊緣點,E值是一個強度閾值,該規則可利用梯度向量的幅度或者角度來規定。
第二種是區域處理,該區域的邊界有許多離散的點構成(由于噪聲等原因而離散),然后選取兩個點,連接線段,求剩下點到該線段的距離,如果大于我們給定的距離,則將該點放入邊緣點的序列中,對這些點進行連接,一直到形成閉合的區域而停止。如此便可以得到近似的邊界,該方法稱為多邊形擬合算法。
第三種是使用霍夫變換的全局處理,由于上述方法對每一個點都要進行比較,執行的次數非常大,而基本沒有應用價值,于是采用霍夫變換。我們可以利用上述檢測原理,將直線方程的x、y變量轉化為?,?變量,是基于式:
xcos??ysin???
那么對于不同的x,y有不同的曲線,當這些曲線相交某一點時,相對于空間坐標中的意義就是不同的點的直線對應于同一條直線方程,也就是有很多點共線。那么我們可以根據所需
要找的邊界,給出對應的直線方程,就可以找到對應的?,?曲線,從而提取出所需要的邊界。
二、基于閾值處理的分割
從這一節開始就是根據相似性原理來分割圖像了。對于一個表達式:
g(x,y)???1,.....f(x,y)?T ?0,.....f(x,y)?T
其中T是一種我們設定的分割圖像的灰度閾值,該處理稱為全局閾值處理。當對于T值隨著圖像特征而改變時稱為可變閾值處理。我們在前面學過對于灰度值的直方圖表示,對于一幅含有不同灰度的圖像,針對前景灰度值的不同,在灰度直方圖中可以看到明顯的波峰與波谷,其中對應的波谷便是我們所要分割的閾值。
1、Otsu方法
該方法在類間方差最大的情況下是最佳的。根據圖像的灰度特性,圖像分為背景和前景,當背景和前景之間的類間方差越大,說明構成圖像的兩部分的差別越大,當部分前景錯分為背景或部分背景錯分為前景都會導致兩部分差別變小,那么對于使雷靜方差最大的分割意味著錯分概率最小。
2、用圖像平滑改善全局閾值處理
由于噪聲的存在,如果噪聲的比例加大,那么在直方圖中感興趣區域的圖像灰度直方圖會受到嚴重的干擾甚至被完全遮蓋,無論如何選取閾值都很難進行很好的分割。于是先將對圖像進行模糊平滑,去除或減小噪聲的影響,使直方圖中的波谷重新呈現,在進行Otsu方法進行閾值處理。
3、用邊緣改進全局閾值處理
如果需要分割的前景圖像過于小的時候,在直方圖中沒辦法超過噪聲對直方圖的貢獻,那我們可以采用計算該圖像的梯度或者拉普拉斯來確定。通過將計算后的圖像與原圖像進行相乘操作,再對其非零元素區域進行直方圖的繪制,那么就可以呈現很明顯的波谷,其實所呈現的波峰其高灰度段便是圖像的邊緣特征,然后利用Otsu方法選取閾值,便可得到分割。
4、可變閾值處理
雖然用圖像平滑和使用邊緣信息用來改善圖像凸顯邊緣,但是仍然會出現無法滿足要求的情況,這種時候我們采用一種塊分割的辦法來求解閾值,將整幅圖像分成相同的若干份,對每一份進行求閾值的操作,那么對于每一幅的直方圖便可以有很好的體現,從而分割出圖像,然后將其合并。該方法的目的就是將感興趣物體和背景占據的比例大小合適的區域。
三、基于區域的分割
分割的目的就是將一幅圖像分割成若干個區域,那么基于區域的分割便是直接以尋找區域為基礎的分割技術。
采用的一種技術叫“區域生長”,就是根據預先定義的生長準則將像素或者子區域組合成更大區域的過程。第一個首要過程便是尋找“種子區域”,根據預先定義的性質將一些鄰域內像素凡是符合預先定義準則的都將被加入到每個種子上來,從而形成這些生長區域,其實也就是進行不斷地迭代,直到不再有像素滿足加入某個區域的準則,這樣生長就會停止。
那么另一種技術便是首先將一幅圖像細分為一組任意的不相交的區域,然后根據分隔條件聚合和/或分裂這些區域。對于一開始的細分操作,是針對每個單獨的細分區域進行準則的匹配,如果不匹配,則進行再次細分,即Q(Ri)?FALSE,然后依次在進行細分和判斷,但是由于是對某個單獨的區域進行的匹配,所以細分的過程中所產生的一些區域可能具有相同的屬性,那么對于細分后的區域將要進行聚合操作,這樣就可以產生最終的區域分割。它的分割精度,關鍵是在于匹配準則的選取,因為它的選取決定了在細分過程中的細分精細程度。
四、基于形態學分水嶺的分割
該分割方法是一種比上述幾種方法更穩定的分割技術,它的關鍵原理就是找到分水線。一幅圖像是由一定的灰度級所顯現的,那么把它看成一幅三維的山脈圖,也就是說灰度越高,海拔越高,灰度越低,海拔越低,這就形成了一幅有山脈、有盆地的一幅山川景圖。那么對于此算法,也就是通過在此幅圖當中灰度級最低的(也就是海拔最低的)地方戳一個洞,水從這個洞中流出,根據一步步的迭代,水會流出的越來越多,而被淹沒的海拔也會越來越高,慢慢的就會淹沒一些小的山峰,而這些山峰所形成的便是“分水線”,即分開兩個不同水域的界限,這些分水線是不完整的,那么就繼續迭代,直到分水線的全部出現,此時分割的任務也就完成了。
然而對于某些噪聲和梯度的局部不規則性,該算法會造成過度分割,形成大量的分割無用的分割區域,這時就采用標記的方法來克服。將與感興趣物體相聯系的標記稱為內部標記,與背景相關聯的標記稱為外部標記,我們對內部標記的定義為:a.被更高海拔點包圍的區域;b.區域中形成一個連通分量的那些點;c.連通分量中所有的點有相同的灰度值。基于這樣的一種標記,可以在分割中去除大量的背景分割區域,從而區分出我們感興趣的物體。
總結:本章節內容講述的幾種重要的分割方法各有特點,不僅針對不同特性的圖像用相應的方法,還可以聯合起來應用,尤其是對于一幅多分辨率的圖像,可利用塊分割的辦法對于不同區域的圖像分割用不同的方法進行,能夠得到最有效的效果。然而對于本章節所提到的一個分割的關鍵因素便是分割準則的確定,而這個準則不僅僅只是一個灰度值一些簡單的表示,還會利用下一章表示和描述中達到更精確更復雜更有效的分割準則的表示方法。
第二篇:《數字圖像處理》
實驗五 圖像的幾何變換
一.實驗目的及要求
掌握圖像幾何變換的基本原理,熟練掌握數字圖像的縮放、旋轉、平移、鏡像和轉置的基本原理及其MATLAB編程實現方法。
二、實驗內容
(一)研究以下程序,分析程序功能;輸入執行各命令行,認真觀察命令執行的結果。熟悉程序中所使用函數的調用方法,改變有關參數,觀察試驗結果。
1.圖像縮放 clear all, close all I = imread('cameraman.tif');Scale = 1.35;
% 將圖像放大1.35倍
J1 = imresize(I, Scale, 'nearest');
% using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');
% using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');help imresize
% 查看imresize使用幫助
1.95倍
I = imread('cameraman.tif');Scale = 1.96;
% 將圖像放大1.96倍
J1 = imresize(I, Scale, 'nearest');
% using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');
% using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');
說明:
?注意觀察不同插值方法的圖像表現; ?改變圖像縮放因子Scale,重做上述實驗。2.圖像旋轉
clear all, close all I = imread('cameraman.tif');Theta = 45;
% 將圖像逆時針旋轉45?。
J1 = imrotate(I, Theta, 'nearest');
% using the nearest neighbor interpolation Theta =-45;
% 將圖像順時針旋轉45?。
J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');% 查看imrotate使用幫助 help imrotate %-------
圖像旋轉30順時針逆時針
clear all, close all I = imread('cameraman.tif');Theta = 30;
% 將圖像逆時針旋轉30。
J1 = imrotate(I, Theta, 'nearest');
% using the nearest neighbor interpolation Theta =-30;
% 將圖像順時針旋轉30。
J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');7 說明:
?注意觀察不同插值方法和輸出圖像后處理方法的圖像表現; ?改變旋轉角度大小和方向,重做上述實驗。
3.圖像水平鏡象
clear all, close all I = imread('cameraman.tif');I1 = flipdim(I,2);
I2 = flipdim(I,1);figure(1), subplot(1,2,1), imshow(I);subplot(1,2,2), imshow(I1);figure(2), subplot(2,1,1), imshow(I);subplot(2,1,2), imshow(I2);%----
(二)用MATLAB編程實現以下圖像幾何變換(參考自編講義相關章節)
1.圖像扭曲變換 2.球面變換
三、實驗設備
1.PIII以上微機; 2.MATLAB6.5;
四、預習與思考
1.預習實驗內容,閱讀教材熟悉實驗原理;
2.查閱資料,熟悉實驗中涉及的有關MATLAB函數;
3.利用課余時間,采用MATLAB底層函數編程實現實驗內容
(二)中的圖像平移、圖像轉置等幾何變換。
五、實驗報告要求
1.簡述試驗的目的和試驗原理;
2.敘述各段程序功能,改變有關函數的參數,分析比較實驗結果; 3.打印出所編寫的實驗程序。4.寫出本實驗的心得體會及意見。
實驗六
數字圖像處理應用
一.實驗目的及要求
1.利用MATLAB提供的圖像處理函數實現圖像中物體屬性的測量; 2.訓練綜合運用MATLAB圖像處理函數的能力; 3.了解數字圖像處理基本應用。
二、實驗內容
以大米粒特性測量為例,綜合應用課程中圖像分割、形態學濾波、圖像增強、圖像特征提取等圖像處理方法,實現大米粒特性自動測量。實驗過程簡述:
1. 讀取和顯示圖像 2. 估計圖像背景 3. 獲取背景均勻的圖像 4. 圖像增強 5. 圖像二值化分割 6. 區域標記及為彩色處理
7. 測量圖像中的區域特性(面積、質心等)
8.統計大米粒的特性分布規律。
(一)研究以下程序,分析程序功能;輸入執行各命令行,認真觀察命令執行的結 果。熟悉程序中所使用函數的調用方法,改變有關參數,觀察試驗結果。
% Read and Display an Image clear, close all,close all;I = imread('rice.png');
figure, imshow(I)
% Use Morphological Opening to Estimate the Background
background = imopen(I,strel('disk',15));
figure, imshow(background);
%Display the Background Approximation as a Surface
figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]);set(gca,'ydir','reverse');% Subtract the Background Image from the Original Image I2 = imsubtract(I,background);figure, imshow(I2)% Adjust the Image Contrast I3 = imadjust(I2, stretchlim(I2), [0 1]);figure, imshow(I3);% Apply Thresholding to the Image level = graythresh(I3);bw = im2bw(I3,level);figure, imshow(bw)% Determine the Number of Objects in the Image [labeled,numObjects] = bwlabel(bw,4);
% Label components.numObjects % Examine the Label Matrix RGB_label = label2rgb(labeled, @spring, 'c', 'shuffle');figure, imshow(RGB_label);% Measure Object Properties in the Image graindata = regionprops(labeled,'basic')allgrains = [graindata.Area];% Compute Statistical Properties of Objects in the Image max(allgrains);biggrain = find(allgrains==695)mean(allgrains);figure, hist(allgrains,20);12
(詳見MATLAB IPT的 幫助文檔demo中的Correcting Nonuniform Illumination)
(二)查看MATLAB IPT 幫助文檔,研究其它應用演示
三、實驗設備 1.PIII以上微機; 2.MATLAB6.5;
四、預習與思考
1.預習實驗內容,閱讀教材熟悉實驗原理; 2.查閱資料,熟悉實驗中涉及的有關函數。
3.利用課余時間,采用MATLAB函數編程實現實驗內容
(二)。
五、實驗報告要求
1.簡述試驗的目的和試驗原理;
2.敘述各段程序功能,改變有關函數的參數,分析比較實驗結果; 3.打印出所編寫的實驗程序。4.寫出本實驗的心得體會及意見。
第三篇:數字圖像處理
中南大學
數字圖像處理實驗 實驗名稱:空間濾波和頻域濾波
班級:電子信息0802班
姓名:李哲 學號:0909080609 實驗日期:2010年12月22日
目錄
一,實驗目的???????????????????????3 二,給圖像添加噪聲????????????????????4 三,對被噪聲污染的圖像進行中值濾波和均值濾波???????5 四,對圖像進行空間域的銳化????????????????6 五,MATLAB以外函數空間濾波和圖像銳化??????????7 六,自帶函數傅立葉變換和反變換??????????????8 七,低通濾波器程序????????????????????9 八,心得體會 ??????????????????????10 九,參考文獻 ??????????????????????10
一、實驗目的 1,空間濾波:
圖像平滑主要目的是減少噪聲。噪聲有很多種類,不同的噪聲有不同的抑制措施。本實驗要求用平滑線性濾波和中值濾波2種最典型、最常用的處理算法進行程序設計,學習如何對已被噪聲污染的圖像進行“凈化”。通過平滑處理,對結果圖像加以比較,得出自己的實驗結論。學習如何用銳化處理技術來加強圖像的目標邊界和圖像細節,對圖像進行梯度算子、拉普拉斯算子,使圖像的某些特征(如邊緣、輪廓等)得以進一步的增強及突出。本實驗銳化處理主要在空間域中進行 2,頻域濾波:
掌握傅里葉變換的基本性質; 掌握傅里葉正變換和反變換; 通過實驗了解二維頻譜的分布特點; 掌握怎樣利用傅立葉變換進行頻域濾波
利用MATLAB程序數字圖像的傅立葉變換并且進行頻域濾波
二,給圖像添加椒鹽噪聲或者高斯噪聲: 原理:利用MATLAB自帶函數添加噪聲 程序代碼:A=imread('onion.png');I=rgb2gray(A);imshow(I);J = imnoise(I,'salt & pepper',0.05);figure,imshow(J),title('椒鹽噪聲');%添加椒鹽噪聲 K = imnoise(I,'gaussian',0,0.03);
figure,imshow(K),title('高斯噪聲');%添加高斯噪聲
三,對被噪聲污染的圖像進行中值濾波和均值濾波: 原理:自帶函數進行中值濾波和均值濾波 源程序:A=imread('onion.png');I=rgb2gray(A);J = imnoise(I,'salt & pepper',0.05);k2=medfilt2(J,[5 5]);k3=medfilt2(J,[7 7]);imshow(J),title('原圖');figure,imshow(k2),title('中值濾波5*5模板');figure,imshow(k3),title('中值濾波7*7模板');
四,對圖像進行空間域的銳化: 原理:自帶函數進行空間銳化。源程序:I=imread('coins.png');subplot(121),imshow(I),title('原圖像');H=fspecial('sobel');I2=filter2(H ,I);subplot(122),imshow(I2),title('sobel算子銳化圖像');
五,MATLAB以外函數空間濾波和圖像銳化:
源程序:I = imread('eight.tif');J = imnoise(I,'salt & pepper',0.02);K = medfilt2(J);imshow(J);title('噪聲干擾圖像')figure, imshow(K);title('medfilt2濾波圖像')X=J;a=2;b=2;k=floor(a*b/2)+1;[M,N]=size(X);uint8 Y=zeros(M,N);funBox=zeros(a,b);temp=zeros(a*b);
for i=1:M-a
for j=1:N-b
funBox=X(i:i+a,j:j+b);
temp=funBox(:);
tempSort=sort(temp);
Y(i,j)=tempSort(k);
end;end;figure, imshow(Y);title('濾波圖像')
六,利用Matlab的圖像處理工具箱中提供的函數實現圖像的傅立葉變換和反變換: 源程序:
A=imread('onion.png');f=rgb2gray(A);subplot(131),imshow(f),title('原圖');F=fft2(f);% 快速傅立葉變換
subplot(132),imshow(F),title('傅里葉變換')Fabs=abs(F);% 求幅頻絕對值 Fc=fftshift(Fabs);% 中心移位 SFc=log(1+Fc);% 對數變換
iFc1=ifftshift(Fc);% 中心移位的逆變換,絕對值 iF2=ifft2(iFc1);% 快速傅立葉變換的逆變換
subplot(133),imshow(iF2),title('快速傅立葉變換的逆變換')
七,低通濾波器程序:
I=imread('testpat1.png');subplot(221),imshow(I);title('原始圖像')J1=imnoise(I,'gaussian',0.02);% 疊加高斯白噪聲
subplot(222),imshow(J1);title('添加高斯白噪聲的圖像')f=double(J1);
% 數據類型轉換 g=fft2(f);
% 傅立葉變換 g=fftshift(g);
[M,N]=size(g);nn=2;
% 二階巴特沃斯(Butterworth)低通濾波器 d0=50;
% 設置截止頻率 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*nn));% 計算低通濾波器傳遞函數
result(i,j)=h*g(i,j);end end result=ifftshift(result);J2=ifft2(result);J3=uint8(real(J2));subplot(223),imshow(J3);title('低通濾波后圖像')
心得體會
1,進一步熟悉了Matlab軟件、編程以及圖像處理工具箱 2,學會利用自帶函數對圖像做簡單的處理,例如:均值化等。3,熟練了一些基本函數的運用,例如fspecial,imfilter等。4,加深了對MATLAB編程的理解。
5,對于試驗中的出現的一些問題,懂得怎樣去處理。6,通過實際操作,增強了自己的動手能力,把理論用于實踐。
參考文獻:數字圖像處理第二版
MATLAB教程
第四篇:數字圖像處理上機報告
練習一 常用MATLAB圖像處理命令
一、練習目的
1、熟悉并掌握MATLAB工具的使用;
2、實現圖像的讀取、顯示、代數運算和簡單變換。
二、練習環境
Windows操作系統
Matlab 6.5或以上應用軟件
三、練習內容
1、圖像文件的讀寫
(1)imread函數用來實現圖像文件的讀取。輸入以下程序:
A=imread('文件名.擴展名');%用imread函數來讀入圖像 注:設置路徑 imshow(A);%用imshow函數來顯示圖像 得到的結果如圖:
(2)imfinfo函數用來查詢圖像文件信息。輸入以下程序:
info=imfinfo('文件名.擴展名');% 用imfinfo函數查詢圖像文件信息 得到: info =
Filename: '文件名.擴展名'
(4)imshow函數用來顯示圖像。
剛才介紹imread函數時已使用此函數。
(5)colorbar函數將顏色條添加到坐標軸對象中。輸入以下程序:
RGB=imread('***');%圖像讀入
I=rgb2gray(RGB);%把RGB圖像轉換成灰度圖像
imshow(I),colorbar('vert')% 將顏色條添加到坐標軸對象中
得到如圖:
2、圖像處理的基本操作
一、圖像代數運算
(1)imadd函數實現兩幅圖像的相加或者給一幅圖像加上一個常數。給圖像每個像素都增加亮度的程序如下: I=imread('***');J=imadd(I,100);%給圖像增加亮度 subplot(1,2,1),imshow(I)%填充 subplot(1,2,2),imshow(J)結果如圖5。
(2)imsubtract函數實現從一幅圖像中減去一個常數。輸入以下程序實現從一幅圖像中減去一個常數:
(3)immultiply實現兩幅圖像的相乘或者一幅圖像的亮度縮放(圖像乘以小于1或大于1的參數,比較效果)。輸入以下程序:
(4)imdivide函數實現兩幅圖像的除法或一幅圖像的亮度縮放。輸入以下程序:
二、圖像的空間域操作
(1)imrotate函數實現圖像的旋轉。輸入以下程序: I=imread('***');J=imrotate(I,45);%對圖像進行旋轉 subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);得到圖:
練習二 數字圖像處理的基本操作
一、練習目的
1、練習使用MATLAB工具進行數字圖像處理;
2、實現圖像的邊緣提取、濾波、直方圖修正等操作。
二、練習環境
Windows操作系統
Matlab 6.5或以上應用軟件
三、練習內容
(1)imresize函數實現圖像的縮放。輸入以下程序:
J=imread('文件名.擴展名');X1=imresize(J,2);%對圖像進行縮放 figure,imshow(J)結果如圖
(2)imcrop函數實現圖像的剪切。輸入以下程序: I=imread('***');I2=imcrop(I);%對圖像進行剪切 subplot(填充),imshow(填充);subplot(填充),imshow(填充);如圖:
圖像變換
(1)fft2函數和ifft2函數分別是計算二維的FFT和反變換。輸入以下程序: f=zeros(100,100);f(20:70,40:60)=1;imshow(f);F=fft2(f);% 計算二維的FFT F2=log(abs(F));%對幅值取對數 imshow(F2),colorbar
(2)dct2函數采用基于FFT的算法,用于實現較大輸入矩陣的離散余弦變換。與之對應,idct2函數實現圖像的二維逆離散余弦變換 輸入以下程序: RGB=imread('***');I=rgb2gray(RGB);J=dct2(I);% 對I進行離散余弦變換 imshow(log(abs(J))),colorbar J(abs(J)<10)=0;K=idct2(J);% 圖像的二維逆離散余弦變換 figure,imshow(I);figure,imshow(K,[0,255])得到如圖:
(3)edge函數用于提取圖像的邊緣。輸入以下程序:
RGB=imread('drum.bmp');I=rgb2gray(RGB);BW=edge(I);% 提取圖像的邊緣 imshow(I),figure,imshow(BW);得到圖
圖像增強、分割和編碼
(1)imhist函數產生圖像的直方圖。A=imread('drum.bmp');%讀入圖像
B=rgb2gray(A);%把RGB圖像轉化成灰度圖像 imshow(B);%顯示灰度圖像
imhist(B)%顯示灰度圖像的直方圖 得到圖
(2)histeq函數用于對圖像的直方圖均衡化。接上面程序:
C=histeq(B);%對圖像B進行均衡化 imshow(C);%顯示圖像
imhist(C);%得到均衡化后的灰度直方圖 得到如圖
filter2函數實現均值濾波。輸入以下程序:
a=imread('noise.drum.jpg');I=rgb2gray(a);imshow(I);K1=filter2(fspecial('average',3),I)/255;% 3?3的均值濾波 K2=補充;
% 5?5的均值濾波 K3=補充;
% 7?7的均值濾波 figure,imshow(K1);figure,imshow(K2);figure,imshow(K3);得到圖
(5)medfilt2函數實現中值濾波。輸入以下程序:
自查函數如何使用,并編程: 結果如圖:
練習三
圖像采樣及圖像類型轉換
一、練習目的
1、熟悉并掌握MATLAB圖像處理工具箱的使用;
2、試對自選圖像分別進行4和16倍剪采樣,查看其剪采樣效果
3、將所給圖,轉換成256級灰度圖像,8級灰度圖像和2值圖像
二、練習環境
MATLAB 6.5或以上版本、WIN XP或以上計算機
三、練習內容
使用MATLAB,對圖像進行減采樣。
a = imread('***.JPG');b = rgb2gray(a);[wid,hei]=size(b);%4倍減抽樣
quartimg = zeros(wid/2+1,hei/2+1);i1 = 1;j1 = 1;for i=1:2:wid
for j=1:2:hei
quartimg(i1,j1)= b(i,j);
j1 = j1 + 1;
end i1 = i1 + 1;j1 = 1;end figure
imshow(uint8(quartimg))練習結果如圖
%16倍減抽樣
編程并運行顯示圖像結果:
圖像類型
1、練習內容
試將自選圖,轉換成256級灰度圖像,8級灰度圖像和2值圖像
2、練習方法及程序
使用MATLAB,進行圖像類型變換。
a = imread('***.jpg');b = rgb2gray(a);
figure imshow(b)[wid,hei]=size(b);img8 = zeros(wid,hei);img2 = zeros(wid,hei);for i=1:wid
for j=1:hei
img8(i,j)= floor(b(i,j)/32);%得到8級灰度圖像
end end figure
imshow(uint8(img8),[0,7])for i=1:wid
for j=1:hei
補充;end end figure
imshow(uint8(img8),[0,2])%得到2值圖像
練習結果如圖
練習四
數字圖像的空間域處理
一、練習目的
1、熟悉并掌握MATLAB圖像處理工具箱的使用;
2、熟悉圖像相加的方法及效果
3、熟悉圖像灰度擴展的方法及效果
4、熟悉圖像縮放、旋轉的方法及效果
二、練習環境
MATLAB 6.5或以上版本、WIN XP或以上計算機
三、練習內容 Part 1(1)選擇一幅圖像***.jpg,設置輸入輸出變換的灰度級范圍,a=0.3, b=0.6, c=0.1, d=0.9;
(2)設置非線性擴展函數的參數c=2;
(3)采用灰度倒置變換函數s=255-r進行圖像變換;
(4)設置二值化圖像的閾值,分別為level=0.4,level=0.7參考程序如下: I=imread('***.jpg');figure;subplot(1,3,1);imshow(I);title('原圖');J=imadjust(I,[0.3;0.6],[0.1;0.9]);%設置灰度變換的范圍 subplot(1,3,2);imshow(J);title('線性擴展');I1=double(I);%將圖像轉換為double類型 I2=I1/255;%歸一化此圖像 C=2;K=C*log(1+I2);%求圖像的對數變換 subplot(1,3,3);imshow(K);title('非線性擴展');M=255-I;%將此圖像取反 figure;subplot(1,3,1);imshow(M);title('灰度倒置');N1=im2bw(I,0.4);%將此圖像二值化,閾值為0.4 N2=im2bw(I,0.7);%將此圖像二值化,閾值為0.7 subplot(1,3,2);imshow(N1);title('二值化閾值0.4');subplot(1,3,3);imshow(N2);title('二值化閾值0.7');練習結果與分析
(1)練習結果如圖3.7所示。
Part 2 讀取一幅圖片,如***.jpg,設置圖像旋轉的角度分別為450和900,采用圖形旋轉函數imrotate對圖像進行旋轉。程序如下,結果如圖3.10。
I=imread('i_lena.jpg');J=imrotate(I,45);%圖像進行逆時針旋轉,默認采用最近鄰法進行插值處理 K=imrotate(I,90);%默認旋轉出界的部分不被截出 subplot(1,3,1);imshow(I);subplot(1,3,2);imshow(J);subplot(1,3,3);imshow(K);練習結果與分析
(1)練習結果如圖3.10所示。
練習五 數字圖像的頻域處理
一、練習目的
1、熟悉并掌握MATLAB工具的使用;
2、實現圖像離散傅里葉變換并觀察效果
3、實現圖像離散余弦變換并觀察效果
二、練習環境
Windows操作系統 Matlab 6.5或以上應用軟件
三、練習內容 Part 1 選取一幅圖像,進行離散傅里葉變換,再對其分別進行X軸與Y軸上的平移,得其離散傅里葉變換,觀察三幅結果圖。
I=imread('1.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI);%求離散傅里葉頻譜
%對原始圖像進行二維傅里葉變換,并將其坐標原點移到頻譜圖中央位置
RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;
figure(2)imshow(real(a));練習結果與分析
Part 2 選取一幅圖像,進行離散傅里葉變換,再對其進行一定角度的旋轉,進行離散傅里葉變換。
%構造原始圖像
I = zeros(256,256);
I(88:168,124:132)= 1;%圖像范圍是256*256,前一值是縱向比,后一值是橫向比 imshow(I)
%求原始圖像的傅里葉頻譜
J = fft2(I);F = abs(J);J1 = fftshift(F);figure imshow(J1,[5 50])
%對原始圖像進行旋轉
J = imrotate(I,90,'bilinear','crop');figure imshow(J)%求旋轉后圖像的傅里葉頻譜
J1 = fft2(J);F = abs(J1);J2 = fftshift(F);figure imshow(J2,[5 50])練習結果與分析
1)練習結果如圖4.4所示.Part 3 選取一幅圖像,進行離散余弦變換,并對其進行離散余弦反變換,觀察其結果。
%對***.jpg文件計算二維DCT變換 RGB = imread('***.jpg ');figure(1)imshow(RGB)I = rgb2gray(RGB);%真彩色圖像轉換成灰度圖像 J = dct2(I);%計算二維DCT變換 figure(2)imshow(log(abs(J)),[])%圖像大部分能量集中在上左角處 figure(3);J(abs(J)< 10)= 0;%把變換矩陣中小于10的值置換為0,然后用idct2重構圖像 K = idct2(J)/255;imshow(K)練習結果與分析
第五篇:數字圖像處理學習報告
數字圖像處理學習報告
在這一學期,我選修了《數字圖像處理基礎》這門課程,同時,老師還講授了一些視頻處理的知識。在這里,梳理一下這學期學到的知識,并提出一些我對這門課程的建議。
圖像處理是指對圖像信息進行加工,從而滿足人類的心理、視覺或者應用的需求的一種行為。圖像處理方法一般有數字法和光學法兩種,其中數字法的優勢很明顯,已經被應用到了很多領域中,相信隨著科學技術的發展,其應用空間將會更加廣泛。數字圖像處理又稱為計算機圖像處理,它是指將圖像信號轉換成數字信號并利用計算機對其進行處理的過程.數字圖像處理是從20世紀60年代以來隨著計算機技術和VLSL的發展而產生、發展和不斷成熟起來的一個新興技術領域。數字圖像處理技術其實就是利用各種數字硬件與計算機,對圖像信息通過轉換而得到的電信號進行相應的數學運算,例如圖像去噪、圖像分割、提取特征、圖像增強、圖像復原等,以便提高圖像的實用性。其特點是處理精度比較高,并且能夠對處理軟件進行改進來優化處理效果,操作比較方便,但是由于數字圖像需要處理的數據量一般很大,因此處理速度有待提高。目前,隨著計算機技術的不斷發展,計算機的運算速度得到了很大程度的提高。在短短的歷史中,它卻廣泛應用于幾乎所有與成像有關的領域,在理論上和實際應用上都取得了巨大的成就。
1.數字圖像處理需用到的關鍵技術
由于數字圖像處理的方便性和靈活性,因此數字圖像處理技術已經成為了圖像處理領域中的主流。數字圖像處理技術主要涉及到的關鍵技術有:圖像的采集與數字化、圖像的編碼、圖像的增強、圖像恢復、圖像分割、圖像分析等。
圖像的采集與數字化:就是通過量化和取樣將一個自然圖像轉換為計算機能夠處理的數字形式。
圖像編碼:圖像編碼的目的主要是來壓縮圖像的信息量,以便能夠滿足存儲和傳輸的要
求。
圖像的增強:圖像的增強其主要目的是使圖像變得清晰或者將其變換為機器能夠很容易
分析的形式,圖像增強方法一般有:直方圖處理、灰度等級、偽彩色處理、邊緣銳化、干擾抵制。
圖像的恢復:圖像恢復的目的是減少或除去在獲得圖像的過程中因為各種原因而產生的
退化,可能是由于光學系統的離焦或像差、被攝物與攝像系統兩者之間的相對運動、光學或電子系統的噪聲與介于被攝像物跟攝像系統之間的大氣湍流等等。
圖像的分割:圖像分割是將圖像劃分為一些互相不重疊的區域,其中每一個區域都是像素的一個連續集,通常采用區域法或者尋求區域邊界的境界法。
圖像分析:圖像分析是指從圖像中抽取某些有用的信息、數據或度量,其目的主要是想得到某種數值結果。圖像分析的內容跟人工智能、模式識別的研究領域有一定的交叉。2.數字圖像處理的特點
數字圖像處理的特點主要表現在以下幾個方面:
1)數字圖像處理的信息大多是二維信息,處理信息量很大。因此對計算機的計算速度、存
儲容量等要求較高。2)數字圖像處理占用的頻帶較寬。與語言信息相比,占用的頻帶要大幾個數量級。所以在成像、傳輸、存儲、處理、顯示等各個環節的實現上技術難度較大,成本亦高。這就對頻
帶壓縮技術提出了更高的要求。
3)數字圖像中各個像素不是獨立的,其相關性大。在圖像畫面上,經常有很多像素有相同
或接近的灰度。所以,圖像處理中信息壓縮的潛力很大。
4)數字圖像處理后的圖像受人的因素影響較大,因為圖像一般是給人觀察和評價的。
3.數字圖像處理的優點
數字圖像處理的優點主要表現在4個方面。
1)再現性好。數字圖像處理與模擬圖像處理的根本不同在于它不會因圖像的存儲、傳輸或
復制等一系列變換操作而導致圖像質量的退化。只要圖像在數字化時準確地表現了原稿,那么數字圖像處理過程始終能保持圖像的再現。
2)處理精度高。將一幅模擬圖像數字化為任意大小的二維數組,主要取決于圖像數字化設
備的能力.3)適用面寬。圖像可以來自多種信息源,它們可以是可見光圖像,也可以是不可見的波譜圖像。只要針對不同的圖像信息源,采取相應的圖像信息采集措施,圖像的數字處理方法 適用于任何一種圖像。
4)靈活性高。圖像處理大體上可分為圖像的像質改善、圖像分析和圖像重建三大部分,每
一部分均包含豐富的內容。
4.數字圖像處理的應用領域
圖像是人類獲取和交換信息的主要來源,因此,圖像處理的應用領域必然涉及到人類生
活和工作的方方面面,隨著人類活動范圍的不斷擴大,圖像處理的應用領域也將隨之不斷擴 大。
航天和航空技術:在飛機遙感和衛星遙感技術中用配備有高級計算機的圖像處理系統來判讀分析,既節省人力又加快了速度,還可以從照片中提取人工所不能發現的大量有用情報。生物醫學工程:除了CT技術之外,還有對醫用顯微圖像的處理分析,如紅細胞、白細胞分類,染色體分析,癌細胞識別等。
通信工程:當前通信的主要發展方向是聲音、文字、圖像和數據結合的多媒體通信。在一定意義上講,編碼壓縮是這些技術成敗的關鍵。除了已應用較廣泛 的熵編碼、DPCM編碼、變換編碼外,目前國內外正在大力開發研究新的編碼方法,如分行編碼、自適應網絡編碼、小波變換圖像壓縮編碼等。
工業和工程領域:圖像處理技術有著廣泛的應用,如自動裝配線中檢測零件的質量并對零件進行分類,印刷電路板疵病檢查,彈性力學照片的應力分析,流體力學圖片的阻力和升力分析,郵政信件的自動分揀,在一些有毒、放射性環境內識別工件及物體的形狀和排列狀態,先進的設計和制造技術中采用工業視覺等等。
軍事方面:圖像處理和識別主要用于導彈的精確末制導 各種偵察照片的判讀,具有圖像傳輸、存儲和顯示的軍事自動化指揮系統,飛機、坦克和軍艦模擬訓練系統等;公安業務圖片的判讀分析,指紋識別,人臉鑒別,不完整圖片的復原,以及交通監控、事故分析等。
文化藝術:電視畫面的數字編輯、動畫的制作、電子圖像游戲、紡織工藝品設計、服裝設計與制作、發型設計、文物資料照片的復制和修復、運動員動作分析和評分等等。
視頻和多媒體系統:電視制作系統廣泛使用的圖像處理、變換、合成,多媒體系統中靜止圖像和動態圖像的采集、壓縮、處理、存貯和傳輸等。
電子商務:圖像處理技術在電子商務中也大有可為,如身份認證、產品防偽、水印技術等。
在這門課程的最后,代課老師給我們講授了數字視頻處理,讓我們了解到數字視頻就是以數字形式記錄的視頻,和模擬視頻相對的。數字視頻有不同的產生方式,存儲方式和播出方式。比如通過數字攝像機直接產生數字視頻信號,存儲在數字帶,P2卡,藍光盤或者磁盤上,從而得到不同格式的數字視頻。然后通過PC,特定的播放器等播放出來。了解了數字視頻發展過程和視頻壓縮的概念和分類等。
我們這門課程主要是上理論課,其中有很復雜的數學原理,專業術語多,基礎知識要求高,理解起來有些困難。當初選擇這門課是希望能有一些具體軟件的教學。就我了解,視頻處理的軟件有MAYA、Premiere、繪聲繪影、windows自帶的MOVE MAKER;處理數字圖像的軟件主要有matlaB、photoshop、ImageJ(java圖像處理程序)。其中,matlaB和PS 很具有教學性,這兩個軟件也運用的很廣。
MATLAB全稱是MatrixLaboratory(矩陣實驗室),一開始它是一種專門用于矩陣數值計算的軟件,從這一點上也可以看出,它在矩陣運算上有自己獨特的特點。實際運用MATLAB中的絕大多數的運算都是通過矩陣這一形式進行的,這一特點決定了MATLAB在處理數字圖像上的獨特優勢。理論上講,圖像是一種二維的連續函數,然而計算機對圖像進行數字處理時,首先必須對其在空間和亮度上進行數字化,這就是圖像的采樣和量化的過程。
Photoshop是Adobe公司旗下最為出名的圖像處理軟件之一,集圖像掃描、編輯修改、圖像制作、廣告創意,圖像輸入與輸出于一體的圖形圖像處理軟件,深受廣大平面設計人員和電腦美術愛好者的喜愛。
如果能理論和實踐相結合,相信我們會把數字圖像處理理解的跟透徹,同時也鍛煉了大家的動手能力。希望老師能多開設實際動手的課程。