數碼訊號與影象處理
姓名學號年級
專業學院
指導教師
二o一六年1月
基於matlab gui的數字影象處理方法
摘要:基於數字訊號處理原理,在數字濾波器設計理論和matlab 程式設計技術及其gui 圖形使用者介面設計的基礎上,開發了具有互動式特點的數字影象處理gui軟體,介面操作簡單方便。
matlab既是一種直觀、高效的計算機語言,同時又是乙個科學計算平台。它為資料分析和資料視覺化、演算法和應用程式開發提供了最核心的數學和高階圖形工具。根據它提供的500多個數學和工程函式,工程技術人員和科學工作者可以在它的整合環境中互動或程式設計以完成各自的計算。
matlab中整合了功能強大的影象處理工具箱。由於matlab語言的語法特徵與c語言極為相似,而且更加簡單、更加符合科技人員對數學表示式的書寫格式,而且可移植性好、可擴充套件性強,再加上其中有豐富的影象處理函式,所以matlab在影象處理的應用中具有很大的優勢。
關鍵詞:matlab gui;數字影象處理;圖形使用者介面
1 matlab的影象處理工具概述
matlab提供了多種影象處理函式,涵蓋了影象處理的包括近期研究成果在內的幾乎所有的技術方法,影象處理工具箱函式有噪和退化影象的恢復、圖形繪製、圖形的代數與邏輯運算、圖形幾何變換、影象增強、影象復原、二值分析、小波分析和分形幾何。在工程實際應用中灰度與二值影象的形態**算;結構元素建立與處理;基於邊緣的處理;色彩對映表操作;色彩空間變換;影象型別與型別轉換;以及圖形使用者介面設計等。
2應用matlab工具箱進行影象分析處理
應用matlab的gui檔案對**進行灰度處理,亮度處理,放大處理,翻轉處理,雜訊處理,影象二值化,影象直方圖、頻譜圖,濾波器,影象腐蝕,建立索引影象,rgb轉hsv,rgb轉ntsc,rgb轉ycbcr和影象通道處理。
圖1 是gui的最終設計介面,圖2是工作時介面。
圖1圖2
2.1圖形處理方法介紹及其處理結果
圖3是原影象,以下是實現的源程式及相關功能的部分註解:
global im; %定義全域性變數
[name,path]=uigetfile(,'載入影象');
if isequal(name,0)|isequal(path,0)
errordlg('沒有選中檔案','出錯');
return;
else
x=imread([path,name]);%讀取**
axes(使用第乙個axes
imshow(x);%顯示**
guidata(hobject,handles)
end圖3
圖4為影象處理方法按鈕:
圖42.2程式除錯
1)灰度處理
由於rgb影象是三維影象,所以影象資料是乙個三維陣列,為了顯示灰度影象,把三維影象降為二維,可以只取其中的二維資料,實現方法程式為:
y=( %當然也可以選擇(:,:,2) 或(:,:,3)
imshow(y);
但是這樣的話,根據程式所選的不同,影象資料也不同,顯示也就不一樣。
另一種方法就是,運用rgb2gray函式實現彩色影象到灰度影象的轉換。程式為:
y=rgb2gray(
imshow(y);
這個程式只能用於rgb影象轉換灰度影象,當原始影象本來就是灰度影象時,執行該程式時就會出錯,但是使用者在使用時有時並不知道這些,為了使該程式更加完善,應該在使用者原先影象時灰度影象時使用該功能時,應該要顯示提示類資訊。所以在開始時應該要有乙個rgb影象或是灰度影象的判斷過程。完整的程式如下:
if isrgb(
y=rgb2gray(
imshow(y);
else
msgbox('這已經是灰度影象','轉換失敗');
end如果原圖是rgb,執行該操作的結果如圖5:
圖 5如果原圖本身已經是灰度影象了,執行該操作彈出如下圖所示的提示對話方塊
2)亮度處理
用imadjust函式,其呼叫格式如下:
g=imadust(f,[low_in high_in],[low_out high_out]),gamma)
gamma 表示對映性質,預設值是1 表示線性對映。
由於該函式有五個引數需要輸入,為了方便使用者改變,所以這裡設計乙個輸入對話方塊,使用者通過對話方塊把五個引數賦值給[low_in high_in],[low_out high_out],gamma這五個引數,如下一組命令建立了如圖所示的輸入對話方塊:
prompt=;
defans=;
p=inputdlg(prompt,'輸入引數',1,defans);
執行該操作,結果如下圖:
圖 63)翻轉
上下翻轉程式:axes(
x=(if isrgb(
for k=1:3
y(:,:,k)=flipud(x(:,:,k));%上下翻轉函式
endimshow(y);
else
x=(y=flipud(x);
imshow(y);
end左右翻轉程式:axes(
if isrgb(
x=(for k=1:3
y(:,:,k)=fliplr(x(:,:,k));%左右翻轉函式
endimshow(y);
else
x=(y=fliplr(x);
imshow(y);
end任意角度翻轉程式:axes(
prompt=;
defans=;
p=inputdlg(prompt,'輸入引數',1,defans);
p1=str2num(p);
y=imrotate(
imshow(y);
圖 7 上下翻轉
圖 8 左右翻轉
圖 9任意角度翻轉
4)雜訊處理
高斯雜訊程式:axes(
prompt=;
defans=;
p=inputdlg(prompt,'輸入引數',1,defans);
p1=str2num(p);
p2=str2num(p; %預設值
p=inputdlg(prompt,'輸入引數',1,defans);
p1=str2num(p{1字串轉化為數值
axes(
x=(y=imnoise(x,'salt & pepper',p1
imshow(y);
guidata(hobject,handles);
圖10 高斯雜訊
圖11 椒鹽雜訊
5)直方圖處理
r直方圖程式:set('handlevisibility','on');
axes(
x=imhist(直方圖統計
x1=x(1:10:256);
horz=1:10:256;
bar(horz,x1);
set('xtick',0:50:255);
g直方圖程式:set('handlevisibility','on');
axes(
if isrgb(
x=imhist( %直方圖統計
x1=x(1:10:256);
horz=1:10:256;
bar(horz,x1);
set('xtick',0:50:255);
else
msgbox('這是灰度影象','旋轉失敗');
endb直方圖程式:set('handlevisibility','on');
axes(
if isrgb(
x=imhist(直方圖統計
x1=x(1:10:256);
數字影象處理實驗
數字影象處理數學方法 實驗指導 實驗目的和任務 通過實驗對數字影象的基本理論和基本運算 影象空域變換和頻域變換 影象增強等基本處理方法有更深入的理解。實驗要求 獨立完成各項實驗內容 記錄每一項實驗內容實現的步驟 列印輸出相應實驗中的原始影象和實驗生成影象 獨立撰寫實驗報告。實驗環境 計算機機房 實驗...
數字影象處理大綱
一 理論課程主要內容及學時安排 32學時 第一章緒論 2學時 1 數字影象處理的發展 2 數字影象處理的主要研究內容 3 數字影象處理的基本步驟 4 影象處理系統的組成 第二章數字影象基礎 4學時 1 視覺感知要素 2 影象的取樣和量化 3 畫素間的基本關係 4 數字影象處理中的基本數 算 第三章灰...
《數字影象處理A》試卷
裝訂線課程 數字影象處理a 班級姓名學號 密封線安徽工業大學試題紙 一 題號得分一二 三四五六 七 十 十一十二 十三十四 十五十六 十七十八 十九二十 總分2009 20010學年第一學期 數字影象處理a 補考試卷一 填空題 30分 1 windows bmp檔案其行 line 與寬 width ...