第一篇:數字圖像處理學習報告
數字圖像處理學習報告
在這一學期,我選修了《數字圖像處理基礎》這門課程,同時,老師還講授了一些視頻處理的知識。在這里,梳理一下這學期學到的知識,并提出一些我對這門課程的建議。
圖像處理是指對圖像信息進行加工,從而滿足人類的心理、視覺或者應用的需求的一種行為。圖像處理方法一般有數字法和光學法兩種,其中數字法的優勢很明顯,已經被應用到了很多領域中,相信隨著科學技術的發展,其應用空間將會更加廣泛。數字圖像處理又稱為計算機圖像處理,它是指將圖像信號轉換成數字信號并利用計算機對其進行處理的過程.數字圖像處理是從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公司旗下最為出名的圖像處理軟件之一,集圖像掃描、編輯修改、圖像制作、廣告創意,圖像輸入與輸出于一體的圖形圖像處理軟件,深受廣大平面設計人員和電腦美術愛好者的喜愛。
如果能理論和實踐相結合,相信我們會把數字圖像處理理解的跟透徹,同時也鍛煉了大家的動手能力。希望老師能多開設實際動手的課程。
第二篇:學習數字圖像處理心得范文
學習數字圖像處理心得
姓名:黃冬芬
學號:070212051
班級:12級通信工程1班
數字圖像是我們生活中接觸最多的圖像種類,他伴隨人們的生活、學習、工作,并在軍事、工業和醫學方面發揮著極大地作用,可謂隨處可見,尤其在生活方面作為學生的我們,會在外出旅游,生活和工作中拆下許多數字照片,現在已進入信息化時代,圖片作為信息的重要載體,在信息傳輸方面有著不可替代的作用,并且近年來圖像處理領域,數字圖像處理技術取得了飛速的發展,作為計算機類專業的大學生更加有必要對數字圖像處理技術有一定的掌握,而大多數人對于數字圖像的知識也很模糊,比如各類繁多的各種圖像格式之間的特點,不同的情況該用何種圖像格式,還有關于圖像的一些基本術語也不甚了解。尤為重要的是一些由于拍攝問題導致的令人不甚滿意的照片該如何處理,或者如何對一些照片進行處理實現特殊的表現效果。所以對于數字圖像處理這門課大家有著極大地興趣。我們班有的同學學過Photoshop軟件,因此對于數字圖像處理有了一些基礎,更加想利用這門課的學習加深自己數字圖像處理的理解并提高在數字圖像處理方面的能力。
通過這8周的學習,我們雖然還沒有完全掌握數字圖像處理技術,但是收獲不少,對于數字圖像方面的知識有了更深的了解。更加理解了數字圖像處理的本質,即是一些數字矩陣,但灰度圖像和彩色圖像的矩陣形式是不同的。對于一些耳熟能詳的數字圖像相關的術語有了明確的認識,比如,常見的像素(衡量圖像的大?。?、分辨率(衡量圖像的清晰程度)、位圖(放大后會失真)、矢量圖(經過放大不會失真)等大家都能叫上口但都很模糊的名詞。也了解圖像處理技術中一些常用處理技術的實質,比如銳化處理是使模糊的圖像變清晰,增強圖片的邊緣等細節。而平滑處理的目的是消除噪聲、模糊圖像,在提取大目標之前去除小的細節或彌合目標間的縫隙。對常見的RGB圖像和灰度圖像有了明確的理解,這對大家以后應用Photoshop等圖像處理軟件對圖像進行處理打下了堅實的基礎。更重要的是學習到了數字圖像處理的思想。通過學習也是對C++編程應用的很好的實踐和復習。
當然通過8周的學習還遠遠不夠,也有許多同學收獲甚微,我總結了下大家后期學習的態度與前期學習的熱情相差很大的原因。剛開始大家是有很高的熱情去學習這門課,可隨著這門課的更深入的學習,大家漸漸發現課程講授內容與自己起初想學的實用圖像處理技術是有很大的差別的,大家更著眼于如何利用軟件、技術去處理圖像而得到滿意的效果,或者進行一些圖像的創意設計,可是課程的內容更偏向于如何通過編程實現如何多圖像進行一些類似銳化、邊緣提取、模糊、去除噪聲等基礎功能的實現,這其中涉及很多算法、函數,需要扎實的數學基礎和編程基礎,并且需要利用大量時間在課下編寫代碼,并用visual c++軟件實現并進行調試,然而大部分人的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)練習結果與分析