【正文】
到的窗口如圖 ,文件菜單里包括:打開,保存,退出按鈕;圖像處理菜單里包括: Sobel 算子、 Robert 算子、 Priwitt 算子、 laplacian 算子、 Canny算子功能相應(yīng)的按鈕,分別為 Sobel、 Robert、 Priwitt、 laplacian、 Canny。 圖 17 圖像邊緣檢測:點擊圖像處理菜單,選擇里面的算子所對應(yīng)的按鈕進(jìn)行操作,然后選擇文件菜單里的保存按鈕保存圖片,保存到相應(yīng)的文件夾,則得到的圖如圖 所示。 18 設(shè)計總結(jié) 通過分析幾種應(yīng)用于數(shù)字圖像處理中的邊緣檢測算子 ,根據(jù)它們在實踐中的應(yīng)用結(jié)果進(jìn)行研究 ,主要包括 : Sobel 邊緣算子、 Robert 邊緣算子、 Prewitt 邊緣算子、 laplacian 算子、 Canny 邊緣算子 對圖像 的 邊緣檢測。提供較為精確的邊緣方向信息,邊緣定位精度不夠高。 Robert 算子:采用對角線方向相鄰兩像素之差表示信號的突變,檢測水 平和垂直方向邊緣的性能好于斜線方向,定位精度比較高 , 檢測出的邊緣較細(xì)。即選擇適當(dāng)?shù)拈撝?T,若 P(i,j)≥T ,則 (i,j)為邊緣點, P(i,j)為邊緣圖像。 檢測出的邊緣比較粗,定位精度低,容易損失角點。 Canny 算子:采用高斯函數(shù)對圖像進(jìn)行平滑處理,該算子也將一些高頻邊緣平滑掉,造成邊緣丟失,采用了雙閾值算法檢測和連接邊緣,邊緣的連續(xù)性較好。 Matlab 在工業(yè)方面的應(yīng)用很廣泛,我希望能有機(jī)會更深刻的學(xué)習(xí)理解它。總之,我認(rèn)為這次課程設(shè)計是不錯的,收獲也是豐富的。在整個課程設(shè)計中,我在學(xué)習(xí)上和思想上都受益非淺,這除了自身的努力外,與指導(dǎo)的老師、同學(xué)和朋友的關(guān)心、支持和鼓勵是分不開的。同時我還要感謝在我做課設(shè)期間給予我?guī)椭耐瑢W(xué)們,沒有你們的幫助,我的課設(shè)不會那么順利。同時課程設(shè)計的的完成,讓我在其中學(xué)到了許多,尤其是學(xué)會了幫助合作,懂得了幫助合作造就的效益和成果。CALLBACK39。Property39。Value39。s Tools menu. Choose GUI allows only one % instance to run (singleton). 22 % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help Mywork % Last Modified by GUIDE 08Jan2020 20:09:06 % Begin initialization code DO NOT EDIT gui_Singleton = 1。gui_Name39。gui_Singleton39。gui_OpeningF39。gui_OutputF39。gui_LayoutF39。gui_Callback39。 if nargin amp。 ischar(varargin{1}) = str2func(varargin{1})。 else gui_mainf(gui_State, varargin{:})。img_src39。 % This function has no output args, see OutputF. % hObject handle to figure % eventdata reserved to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin mand line arguments to Mywork (see VARARGIN) % Choose default mand line output for Mywork = hObject。 % UIWAIT makes Mywork wait for user response (see UIRESUME) % uiwait()。 % hObject handle to figure % eventdata reserved to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default mand line output from handles structure varargout{1} = 。*.bmp。*.png。, 39。 ... 39。, 39。}, ... 39。)。%用 axes命令設(shè)定當(dāng)前操作的坐標(biāo)軸是 axes_src fpath=[pathname filename]。%用 imread讀入圖片,并用 imshow在 axes_src上顯示 imshow(img_src)。原圖 39。 setappdata(,39。,img_src)。*.bmp。*.png。, 39。 ... 39。, 39。}, ... 39。)。%用 axes命令設(shè)定當(dāng)前操作的坐標(biāo)軸是 axes_src fpath=[pathname filename]。imshow(img_src)。img_src39。 % hObject handle to m_file_save (see GCBO) % eventdata reserved to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % function m_file_exit_Callback(hObject, eventdata, handles) close()。%用 axes命令設(shè)定當(dāng)前操作的坐標(biāo)軸是 axes_src img_src=getappdata(,39。)。 axes()。title(39。)。0 0 0。 % 建立 Y方向的模板 x_mask = y_mask39。 % 將圖像數(shù)據(jù)轉(zhuǎn)化為雙精度 dx = imfilter(I, x_mask)。 % 計算 Y方向的梯度分量 grad = sqrt(dx.*dx + dy.*dy)。 % 將梯度矩陣轉(zhuǎn)換為灰度圖像 level = graythresh(grad)。 BW = im2bw(grad,level)。 % 顯示分割后的圖像即邊緣圖像 title(39。) % hObject handle to m_sobel (see GCBO) % eventdata reserved to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % 27 function m_Roberts_Callback(hObject, eventdata, handles) img_src=getappdata(,39。)。 axes()。title(39。)。0 1]。 % 建立 Y方向的模板 I = im2double(A)。 % 計算 X方向的梯度分量 dy = imfilter(I, y_mask)。 % 計算梯度 grad = mat2gray(grad)。 % 計算灰度閾值 axes()。 % 用閾值分割梯度圖像 imshow(BW)。Roberts39。img_src39。 A=img_src。 28 imshow(A)。原圖 39。 y_mask = [1 1 1。1 1 1]。 % 建立 X方向的模板 I = im2double(A)。 % 計算 X方向的梯度分量 dy = imfilter(I, y_mask)。 % 計算梯度 grad = mat2gray(grad)。 % 計算灰度閾值 axes()。 % 用閾值分割梯度 圖像 imshow(BW)。Prewitt39。img_src39。 A=img_src。 imshow(A)。原圖 39。 mask=[0,1,0。0,1,0]。 % 將數(shù)據(jù)圖像轉(zhuǎn)化為雙精度 dx = imfilter(I, mask)。 % 將梯度矩陣轉(zhuǎn)化為灰度圖像 29 axes()。 % 用閾值分割梯度圖像 imshow(BW)。Laplacian39。img_src39。 I=img_src。 imshow(I)。原圖 39。 I=rgb2gray(I)。 BW = edge(I,39。)。 % 顯示分割后的圖像,即梯度圖像 title(