|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 u! D- d8 c) f7 r( Y: j' T* A一、简介, p5 r5 T0 b7 ?/ w4 t
$ X+ R$ a6 U# ?! k+ |5 s图像边缘检测是一种定位二维或三维图像(特别是医学图像)中的对象的边缘的系统。通过输入端(310)接收表示该图像的各元素值的数据元素集。该数据集被存储在存储装置(320)中。处理器(340)确定该图像中的对象的边缘。该处理器计算所述数据元素的至少一阶和/或二阶导数,并且计算该图像的等照度线曲率,所述曲率由κ标识。该处理器还确定校正因数α,该校正因数α对于由对象的曲率和/或所述数据的模糊造成的边缘错位进行校正。该校正因数α取决于所述等照度线曲率κ。然后,该处理器确定取决于所计算出的导数和所述等照度线曲率的算子的过零点。该系统的输出端(330)提供对于该图像中的边缘位置的指示。# N2 O7 \" J4 C1 N
8 h; Y( E. F, l* u' a8 u
1 图像边缘检测的基本步骤% Q0 J' M* \$ o* A9 S/ |" f( f* U
(1)滤波。边缘检测主要基于导数计算,但受噪声影响。但滤波器在降低噪声的同时也导致边缘强度的损失。
& \2 G; {1 c4 d6 O(2)增强。增强算法将领域中灰度有显著变化的点突出显示。一般通过计算梯度幅值完成。) q! e1 @) \8 V
(3)检测。但在有些图像中梯度幅值较大的并不是边缘点。
7 z" c8 t: @' p# P/ V(4) 定位。精确确定边缘的位置。) _' D, j: t3 f6 j3 F
1 N3 H3 N! D/ T3 Y9 p n2 边缘算法:sobel prewitt
- K! ]- `8 |8 l) K进行了平滑处理,对噪声具有一定抑制能力,但容易出现多像素宽度。
/ y/ v( O" c2 |& `+ f" w7 V
8 o0 G9 z7 |% B/ P% l6 l3 边缘算法:robert
6 \1 k0 }* ]9 j% s) X边缘定位精度较高,对于陡峭边缘且噪声低的图像效果较好,但没有进行平滑处理,没有抑制噪声的能力。' O: O' r$ u! e2 \
( ?: `( b7 d0 |+ o7 i8 J! ~6 N7 G6 h6 ^: v: W Q0 ]
二、源代码
9 o. F8 r$ g* J& {6 _
: b) p. d. Q7 W9 K5 J- `- function varargout = aaa(varargin)
- % AAA MATLAB code for aaa.fig
- % AAA, by itself, creates a new AAA or raises the existing
- % singleton*.
- %
- % H = AAA returns the handle to a new AAA or the handle to
- % the existing singleton*.
- %
- % AAA('CALLBACK',hObject,eventData,handles,...) calls the local
- % function named CALLBACK in AAA.M with the given input arguments.
- %
- % AAA('Property','Value',...) creates a new AAA or raises the
- % existing singleton*. Starting from the left, property value pairs are
- % applied to the GUI before aaa_OpeningFcn gets called. An
- % unrecognized property name or invalid value makes property application
- % stop. All inputs are passed to aaa_OpeningFcn via varargin.
- %
- % *See GUI Options on GUIDE's 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 aaa
- % Last Modified by GUIDE v2.5 10-Jul-2016 21:47:39
- % Begin initialization code - DO NOT EDIT
- gui_Singleton = 1;
- gui_State = struct('gui_Name', mfilename, ...
- 'gui_Singleton', gui_Singleton, ...
- 'gui_OpeningFcn', @aaa_OpeningFcn, ...
- 'gui_OutputFcn', @aaa_OutputFcn, ...
- 'gui_LayoutFcn', [] , ...
- 'gui_Callback', []);
- if nargin && ischar(varargin{1})
- gui_State.gui_Callback = str2func(varargin{1});
- end
- if nargout
- [varargout{1:nargout}] = gui_maiNFCn(gui_State, varargin{:});
- else
- gui_mainfcn(gui_State, varargin{:});
- end
- % End initialization code - DO NOT EDIT2 @9 e2 r K% O
- H( x4 E, c7 F) D/ N4 g' C( r
( o6 C( F, G9 G. g) Q$ q0 U) }' p8 J! \
三、运行结果$ b% l+ G; l$ i# ?6 k6 c3 n: H1 G
( X( O, f0 N! B$ O- K L( q
, K- {- E" K( K0 O- Y# q
0 @3 I6 {5 e P+ X7 c4 V) @6 T( B" P
/ M9 k* C: G3 m9 }
4 J! _: k& r$ b
& a" G; I( c4 f. N I6 t" v% r) V
2 [" Q% G5 F- j0 q
" f2 u$ `1 ]. V% @$ {
- h+ p& ~- p! _3 e) q
2 n1 q2 ]* o8 E( ]) T& l; ~3 M5 C) p) f* j
% m1 E z3 V& u1 i& A' y) }
|
|