




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、*實踐教學實踐教學*蘭州理工大學蘭州理工大學計算機與通信學院2012 年秋季學期 圖像處理圖像處理 綜合訓練綜合訓練題 目: 圖像分割程序設計 專業班級: 姓 名: 學 號: 指導教師: 成 績: 目目 錄錄摘 要.1一、前言.2二、算法分析與描述.3三、詳細設計過程.5四、調試過程中出現的問題及相應解決辦法.8五、程序運行截圖及其說明.8六、簡單操作手冊.12設計總結.15參考資料.16致謝.17附錄.180摘摘 要要圖像分割就是從圖像中將某個特定區域與其他部分進行分離并提取出來的處理圖像分割處理實際上就是區分圖像中的“前景目標”和“背景”所以通常又稱之為圖像的二值化處理。圖像分割就是把圖像
2、分成若干個特定的、具有獨特性質的區域并提出感興趣目標的技術和過程。它是由圖像處理到圖像分析的關鍵步驟。現有的圖像分割方法主要分以下幾類:基于閾值的分割方法、基于區域的分割方法、基于邊緣的分割方法以及基于特定理論的分割方法等。近年來,研究人員不斷改進原有的圖像分割方法并把其它學科的一些新理論和新方法用于圖像分割,提出了不少新的分割方法。關鍵詞:圖像分割;閾值;二值化;1一、前言一、前言 圖形圖像處理的應用領域涉及人類生活和工作的各個方面,它是從 60年代以來隨計算機的技術和 VLSI 的發展而產生、發展和不斷成熟起來的一個新技術領域理論上和實際應用上都并取得了巨大的成就。數字圖像處理與模擬圖像處
3、理的根本不同在于,它不會因圖像的存儲、傳輸或復制等一系列變換操作而導致圖像質量的退化,所以圖形圖像的處理在我們的生活中又很重要的作用。 在對圖像的研究和應用中,人們往往只對圖像中的某些部分感興趣。這些部分通常稱為目標或前景,它們一般對應圖像中特定的、具體獨特性質的區域。為了辨識和分析目標,需要將它們分別提取出來,在此基礎上才有可能對目標進一步利用。圖像分割就是指把圖像分成各具特性的區域并提取出感興趣的目標的技術和過程。在圖象分析中,通常需將所關心的目標從圖象中提取出來,即圖象的分割。圖象分割在圖象分析,圖象識別,圖象檢測等方面占有非常重要的位置。2二、算法分析與描述二、算法分析與描述1.圖像分
4、割的數學描述令集合 R 代表整個區域,對 R 的分割可看作將 R 分成若干個滿足以下 5 個條件的非空子集(子區域)R1 ,R1 ,Rn (1)所有子集構成圖像;(2)各子集不重疊;(3)每個子集中的像素有某種共同的屬性;(4)不同的子集屬性不同;(5)每個子集中的所有像素應該是連通的。2. 基于灰度直方圖的峰谷法 圖像的灰度直方圖必須是雙峰的直方圖的左側峰為亮度較高的部分,這部分恰好對應于較暗的背景部分,直方圖的右側為亮度較高的部分,這里恰好對應于會面中圖案部分。顯然灰度直方圖的峰谷法是一種有效且非常簡單的閾值方法,但是該方法有一個局限性就是灰度值放度必須是雙峰的。3. 區域生長區域生長的基
5、本思想是將具有相似性質的像素集合起來構成區域。具體先對每個需要分割的區域找一個種子像素作為生長的起點,然后將種子像素周圍鄰域中與種子像素有相同或相似性質的像素(根據某種事先確定的生長或相似準則來判定)合并到種子像素所在的區域中。將這些新像素當作新的種子像素繼續進行上面的過程,直到再沒有滿足條件的像素可被包括進來。這樣一個區域就長成了。區域生長需要選擇一組能正確代表所需區域的種子像素,確定在生長過程中的相似性準則,制定讓生長停止的條件或準則。相似性準則可以是灰度級、彩色、紋理、梯度等特性。選取的種子像素可以是單個像素,也可以是包含若干個像素的小區域。大部分區域生長準則使用圖像的局部性質。生長準則
6、可根據不同原則制定,而使用不同的生長準則會影響區域生長的過程。 區域生長法的優點是計算簡單,對于較均勻的連通目標有較好的分割效果。它的缺點是需要人為確定種子點,對噪聲敏感,可能導致區域內有空洞。另外,3它是一種串行算法,當目標較大時,分割速度較慢,因此在設計算法時,要盡量提高效率。43、詳細設計過程詳細設計過程1.流程圖2.區域生長法區域生長法的數學表達:一致性判別條件:灰度變化閾值:生長準則: 為待測生長的點領域內的灰度值Matlab 代碼:global A0A0=getimage;axes(handles.axes2);seed=100,220;讀入圖像對輸出的圖像進行保存對保存圖像讀取輸
7、出閾值處理結果輸出區域生長處理結果輸出原圖像退出程序結束開 始5thresh=15;A=rgb2gray(A0);A=imadjust(A,min(min(double(A)/255,max(max(double(A)/255,);A=double(A); B=A; r,c=size(B); n=r*c;pixel_seed=A(seed(1),seed(2);q=seed(1) seed(2);top=1;M=zeros(r,c);M(seed(1),seed(2)=1;count=1;while top=0r1=q(1,1);c1=q(1,2);p=A(r1,c1);dge=0;for i
8、=-1:1for j=-1:1if r1+i0 & c1+j0if abs(A(r1+i,c1+j)-p)=ntop=1;endq=q(2:top,:);top=top-1;6endimshow(B,);title( 區域生長分割);handles.img=B;guidata(hObject,handles);3. 基于灰度直方圖的峰谷法 由封谷法的概念可得 Matalb 代碼:global Iaxes(handles.axes2);I=getimage;if ndims(I) = 3I = rgb2gray(I);endfxy = imhist(I, 256); %統計每個灰度值的個
9、數%figure;%subplot(2, 2, 1); %imshow(I, ); %title(原圖)%subplot(2, 2, 2); plot(fxy); %畫出灰度直方圖%title(直方圖)p1 = Input Num:;p2 = 180;p3 = inputdlg(p1,Input Num:1256,1,p2);p = str2num(p31); p = p/255;bw = im2bw(I, p); %小于閾值的為黑,大于閾值的為白%subplot(2, 2, 3);74、調試過程中出現的問題及相應解決辦法調試過程中出現的問題及相應解決辦法問題一:最初的調試過程中總是區域生長算
10、法調試不成功,并且 matlab gui 的設計過程也出現了很多問題,最后發現調用函數方法錯誤,最后通過查 matlab 基礎資料得到解決。問題二:在設計 gui 的時候每次都是處理后的圖像坐標位置沒有放到固定的區域,通過查找 matlab gui 設計資料解決了問題。85、程序運行截圖及其說明程序運行截圖及其說明1.文件打開讀取處理圖片截圖如下:圖 6.1 原圖92.點擊峰谷法分割圖像并截圖得:圖 6.2 峰谷法分割103.點擊區域生長法分割圖像截圖得:圖 6.3 區域生長法分割11六、簡單操作手冊六、簡單操作手冊圖 6.1 “文件打開”按路徑打開圖像文件12圖 6.2 “保存”按路徑保存處
11、理完的圖像文件圖 6.3 “峰谷法分割圖像”對已打開的圖像按閾值進行峰谷法分割處理 13 圖 6.4 “區域生長法分割圖像” 對已打開的圖像進行區域生長法分割處理14設計總結設計總結我們知道人類所獲得信息的 70%以上來自視覺,換句話說人類將用自己雙眼所觀察到的世界進行縝密的分析與思考之后,推動了科技的進步也推動了整個世界的發展。經過了為期兩周的課程設計,我深刻的感受到了圖像處理的強大,與此同時,感受到更多的就是編程的辛苦,只要一個小地方出錯以后,就要對整個程序進行又一遍的檢查,真可為是牽一發而動全身呀,在當初做的時候,雖讓將每一個功能模塊的代碼都寫出來,但是在將他們整合起來的時候,在傳值和做
12、圖形用戶界面的時候出現了很大的問題,最終還是通過網絡和咨詢同學才得以解決問題,所以在這要衷心的感謝網絡和同學們。15參考資料參考資料1 朱 虹. 數字圖像處理基礎M. 科學出版社, 20052 R C.Gonzalez, R E.Woods 著,阮秋琦,阮宇智等譯.數字圖像處理(第 2 版).北京:電子工業出版社,20033 K.R.Castleman. 數字圖像處理.北京:電子工業出版社,20024 章毓晉.圖像處理與分析-圖像工程(上冊),清華大學,20015R C.Gonzalez, R E.Woods, S L. Eddins 著,阮秋琦,阮宇智等譯.數字圖像處理(MATLAB 版).
13、北京:電子工業出版社,200516致謝致謝首先,我要感謝我的指導老師,他嚴謹細致、一絲不茍的作風一直是我生活、學習中的榜樣,給了起到了指明燈的作用;他們循循善誘的教導和不拘一格的思路給予我無盡的啟迪,讓我很快就感受到了設計的快樂并融入其中。其次我要感謝同組同學對我的幫助和指點,沒有他們的幫助和提供資料,沒有他們的鼓勵和加油,這次課程設計就不會如此的順利進行,最后就是要感謝網絡給我們提供了大量的資料。17附錄附錄function varargout = keshe(varargin)% KESHE MATLAB code for keshe.fig% KESHE, by itself, crea
14、tes a new KESHE or raises the existing% singleton*.% H = KESHE returns the handle to a new KESHE or the handle to% the existing singleton*.% KESHE(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLBACK in KESHE.M with the given input arguments.% KESHE(Property,Value,.) create
15、s a new KESHE or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before keshe_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to keshe_OpeningFcn via varargin.% *See
16、GUI Options on GUIDEs Tools menu. Choose GUI allows only one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help keshe% Last Modified by GUIDE v2.5 10-Jan-2013 17:51:00% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_S
17、tate = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, keshe_OpeningFcn, . gui_OutputFcn, keshe_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(
18、gui_State, varargin:);18else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before keshe is made visible.function keshe_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventd
19、ata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to keshe (see VARARGIN)% Choose default command line output for keshehandles.output = hObject;% Update handles structureguidata(hObject, handles);%
20、UIWAIT makes keshe wait for user response (see UIRESUME)% uiwait(handles.figure1);% - Outputs from this function are returned to the command line.function varargout = keshe_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to fig
21、ure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout1 = handles.output;% -function open_file_Callback(hObject, eventdata, handles)% hObject handle to open_fil
22、e (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)filename,pathname=uigetfile(*.jpg;*.bmp;*.tif;*.*,載入圖像);if isequal(filename,0)|isequal(pathname,0) errordlg(沒有選中文件,出錯);19 return;else file=pathname,filename; glob
23、al S %設置一個全局變量 S,保存初始圖像路徑,以便之后的還原操作 S=file; x=imread(file); set(handles.axes1,HandleVisibility,ON); axes(handles.axes1); imshow(x); set(handles.axes1,HandleVisibility,OFF); axes(handles.axes2); imshow(x); handles.img=x; guidata(hObject,handles);end% -function save_file_Callback(hObject, eventdata, h
24、andles)% hObject handle to save_file (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)sfilename ,sfilepath=uiputfile(*.jpg;*.bmp;*.tif;*.*,保存圖像文件,untitled.jpg); if isequal(sfilename,sfilepath,0,0) sfilefullname=sf
25、ilepath ,sfilename; imwrite(handles.img,sfilefullname); else msgbox(你按了取消鍵,保存失敗); end % -function close_file_Callback(hObject, eventdata, handles)% hObject handle to close_file (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data
26、(see GUIDATA)clc;close all;close(gcf);clear;20% - Executes on button press in fenggu.function fenggu_Callback(hObject, eventdata, handles)% hObject handle to fenggu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA
27、)%clc; clear all; close all;%I = imread(lena.jpg);global Iaxes(handles.axes2);I=getimage;if ndims(I) = 3I = rgb2gray(I);endfxy = imhist(I, 256); %統計每個灰度值的個數%figure;%subplot(2, 2, 1); %imshow(I, ); %title(原圖)%subplot(2, 2, 2); plot(fxy); %畫出灰度直方圖%title(直方圖)p1 = Input Num:;p2 = 180;p3 = inputdlg(p1,In
28、put Num:1256,1,p2);p = str2num(p31); p = p/255;bw = im2bw(I, p); %小于閾值的為黑,大于閾值的為白%subplot(2, 2, 3); imshow(bw); title(雙峰閾值分割)handles.img=bw;guidata(hObject,handles);% -function m_file1_r_Callback(hObject, eventdata, handles)% hObject handle to m_file1_r (see GCBO)% eventdata reserved - to be defined
29、 in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%A = imread(C:UsersAdministratorDesktop新建文件夾lena.jpg); % 讀入圖像21% - Executes on button press in quyu.function quyu_Callback(hObject, eventdata, handles)% hObject handle to quyu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global A0A0=getimage;axes(handles.axes2);%A0=imread(lena.jpg);%讀入圖像seed=100,220;%選擇起始位置thresh=15;%相似性選擇閾值A=rgb2gray(A0);%灰度化A=imadjust(A,min(min(double(A)/255,max(max(double(A)/255,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論