Image Sobel边缘检测&x2013;matlab

Image Sobel边缘检测&x2013;matlab,image,matlab,image-processing,Image,Matlab,Image Processing,你好,这是我作业的一部分。我需要计算并显示边缘大小图像和 图像balls1.tif的边缘方向图像,使用Sobel边缘检测 不要使用matlab的边函数。您可以使用conv2。 显示强边缘像素(高于阈值)的二值边缘图像(1个边缘像素,0个无边缘)。 确定消除球阴影的阈值 这是我的主要任务。m addpath(fullfile(pwd,'TOOLBOX')); addpath(fullfile(pwd,'images')); %Sobel Edge Detection Image = readI

你好,这是我作业的一部分。我需要计算并显示边缘大小图像和 图像balls1.tif的边缘方向图像,使用Sobel边缘检测

不要使用matlab的边函数。您可以使用conv2。 显示强边缘像素(高于阈值)的二值边缘图像(1个边缘像素,0个无边缘)。 确定消除球阴影的阈值

这是我的主要任务。m

addpath(fullfile(pwd,'TOOLBOX'));
addpath(fullfile(pwd,'images'));

%Sobel Edge Detection 
Image = readImage('balls1.tif');
showImage(Image);
message = sprintf('Sobel Edge Detection');
sobelEdgeDetection(Image);
uiwait(msgbox(message,'Done', 'help'));
close all
这是我的SobeEdgeDetection.m

function [ output_args ] = SobelEdgeDetection( Image )

maskX = [-1 0 1 ; -2 0 2; -1 0 1];
maskY = [-1 -2 -1 ; 0 0 0 ; 1 2 1] ;

resX = conv2(Image, maskX);
resY = conv2(Image, maskY);

magnitude = sqrt(resX.^2 + resY.^2);
direction = atan(resY/resX);
thresh = magnitude < 101;
magnitude(thresh) = 0;
showImage(magnitude);

end
函数[output_args]=SobelEdgeDetection(图像)
maskX=[-1 01;-2 02;-1 01];
马斯基=[-1-2-1;0 0;1 2 1];
resX=conv2(图像,maskX);
resY=conv2(图像,maskY);
震级=sqrt(resX.^2+resY.^2);
方向=atan(resY/resX);
阈值=幅值<101;
震级(阈值)=0;
显示图像(大小);
结束
我的问题是:
1.i方向是用来做什么的?我如何显示它
2.是否有更好的方法获取阈值以消除球阴影。我用了试错法

以下是我得出的关于震级的结果:


以下是您第一个问题的答案:

在Sobel边缘检测算法中。得到的方向基本上是梯度

图像处理中的梯度定义为强度变化最大的方向。变化可以是强度增加,也可以是强度减少。此外,对每个像素计算该变化,这意味着对每个像素测量强度的最大变化。resX(在您问题的示例中,SobelEdgeDetection.m)表示X方向的更改,resY定义Y方向的更改

请参见在Matlab的命令窗口中实际启动此命令: imshow(resX)


也可以尝试,imshow(resY)

根据作业的第二部分,你已经解决了它,也就是说,你消除了阴影

对于第一个问题:方向可以用很多不同的方式。这里有一个最简单的方法:用它制作漂亮的图片。一个更有用的理由是,当你在进行非最大抑制时,既然你不是手动的,那么它就没有太多的直接用途。为了可视化梯度方向的结果,只需考虑每个方向的颜色就可以了。为了进一步简化可视化,还假设从0开始,将方向减少到30度到180度的增量。这样,如果你有一个35度的方向,例如,你认为它是30度(因为它是你减数表中最接近的一个)。接下来,我们将看到一幅图像,并将其梯度方向可视化,考虑到Sobel和30度的离散化(黑色表示0度方向)


自动确定好的阈值通常不是一项容易的任务。例如,您可以从大津方法提供的方向开始,根据您试图解决的问题,根据其他直方图分析减少或增加其值。

方向-是图像上的梯度方向,它与对象边缘正交。您的图像不允许您消除阴影:在这种情况下,您将失去一些上边框。当我尝试使用imagsec或showImage时,我的图像显示为全黑。我需要做一些缩放吗?我没有做任何缩放,只是回答中描述的。任何从0度到29度的物体都被指定为强度0(黑色),从30度到59度的物体被指定为其他颜色,依此类推。然后你展示给我看。