matlab中edge的用法
edge函数不能接收二进制图片,若是图片格式为.tiff就直接可以用,
edge边缘检测_微软边缘浏览器
二进制图像可以使用bwperim,但是是寻找图像的周边的.
如果你一定要使用edge函数,可以使用double强制把你的二进制图像转换成double型的.
例如:
Ijpg = imread('1.jpg'); %读取图像
BW1=im2bw(Ijpg,0.95);
BW2=double(BW1);
BW3=edge(BW2,'sobel');
matlab不使用edge进行边缘检测
edge使用Sobel边缘检测方法。MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,matlab不使用edge进行边缘检测是因为edge使用Sobel边缘检测方法,边缘检测用于确定图像中的边缘。
matlab中edge支持哪几种不同边缘检测算子
edge函数支持以下几种边缘检测子:Sobel, Prewitt, Roberts, Laplacian of Gaussian, zero-cross, Canny.
可以在Command Window里面输入help edge 命令,查询各种检测子的具体用法,以及其算法的简要描述。
一段英文文献的翻译(边缘检测的)
楼主前一个帖子选了我的答复,你如还有,不妨把链接告诉我,我原意效劳。
The
Canny
edge
detection
algorithm
is
known
to
many
as
the
optimal
edge
detector.Canny边缘检测算法对很多人来说是众所周知的最佳边缘检测工具。
Canny's
intentions
were
to
enhance
the
many
edge
detectors
already
out
at
the
time
he
started
his
work.Canny的意图是提高很多在他开始自己的研究时就已过时的边缘检测工具。He
was
very
successful
in
achieving
his
goal
and
his
ideas
and
methods
can
be
found
in
his
paper,
"A
Computational
Approach
to
Edge
Detection".
他在实现自己的目标时非常成功,他的概念和方法可以在本文中看到。In
his
paper,
he
followed
alist
of
criteria
to
improve
current
methods
of
edge
detection.
在本文中,他遵循了一系列的准则来改进边缘检测的现有方法。The
first
and
most
obvious
is
low
error
rate.首先而最明显的是低的差错率(误码率)。
It
is
important
that
edges
occuring
in
images
should
not
be
missed
and
that
there
be
NO
responses
to
non-edges.
以下两点很重要,即发生在图像中的边缘不应被错过,以及对非边缘“没有”响应。The
second
criterion
is
that
the
edge
points
be
well
localized.这第二条准则是,边缘点被很好定位。
In
other
words,
the
distance
between
the
edge
pixels
as
found
by
the
detector
and
the
actual
edge
is
to
be
at
aminimum.换句话说,由检测器发现的边缘像素和实际边缘之间的距离要处于最小值。
Athird
criterion
is
to
have
only
one
response
to
asingle
edge.第三个准则是对单一的边缘只有一个响应。
This
was
implemented
because
the
first
2were
not
substantial
enough
to
completely
eliminate
the
possibility
of
multiple
responses
to
an
edge.这一条得到了实施,因为前两条对完全消除一个边缘可能出现多次响应方面还不够充分。
边缘检测是什么意思
两个具有不同灰度值的相邻区域之间总存在边缘,边缘是灰度值不连续的表现。由于边缘是图像上灰度变化最剧烈的地方,传统的边缘检测就是利用了这个特点,对图像各个像素点进行微分或求二阶微分来确定边缘像素点。
以下是一段函数是关于边缘检测的一些算法,希望对你有帮助。。
I=imread('D:\10.jpg'); %读取图像
I1=im2double(I); %将彩图序列变成双精度
I2=rgb2gray(I1); %将彩色图变成灰色图
[thr, sorh, keepapp]=ddencmp('den','wv',I2);
I3=wdencmp('gbl',I2,'sym4',2,thr,sorh,keepapp); %小波除噪
I4=medfilt2(I3,[9 9]); %中值滤波
I5=imresize(I4,0.8,'bicubic'); %图像大小
BW1=edge(I5,'sobel'); %sobel 图像边缘提取
BW2=edge(I5,'roberts'); %roberts 图像边缘提取
BW3=edge(I5,'prewitt'); %prewitt 图像边缘提取
BW4=edge(I5,'log'); %log 图像边缘提取
BW5=edge(I5,'canny'); %canny 图像边缘提取
h=fspecial('gaussian',5); %高斯滤波
BW6=edge(I5,'zerocross',[ ],h); %zerocross 图像边缘提取
figure;
subplot(1,3,1); %图划分为一行三幅图,第一幅图
imshow(I2); %绘图
title(' 原始图像'); %标注
subplot(1,3,2); %第二幅图
imshow(I3);
title(' 消噪后图像');
subplot(1,3,3); %第三幅图
imshow(I4);
title(' 中值滤波图像');
figure;
subplot(1,3,1);
imshow(BW1);
title('Sobel 算子');
subplot(1,3,2);
imshow(BW2);
title('Roberts 算子');
subplot(1,3,3);
imshow(BW3);
title('Prewitt 算子');
figure;
subplot(1,3,1);
imshow(BW4);
title('log 算子');
subplot(1,3,2);
imshow(BW5);
title('Canny 算子');
subplot(1,3,3);
imshow(BW6);
title('Zerocross');
matlab中图像边缘检测 edge函数总在报错??
注意图像格式,double格式的灰度图!
I=imread('原始图像');
I1=rgb2gray(I);
I2=im2double(I1);
转换成double(I)