我正在尝试进入计算机视觉领域,首先我在 MATLAB 中实现了一个 Sobel 滤波器,我在这里读到了:http ://en.wikipedia.org/wiki/Sobel_operator
这是代码:
image = double(image);
kernelx = [ -1, 0, 1;
-2, 0, 2;
-1, 0, 1];
kernely = [ 1, 2, 1;
0, 0, 0;
-1, 0, 1];
height = size(image,1);
width = size(image,2);
channel = size(image,3);
for i = 2:height - 1
for j = 2:width - 1
for k = 1:channel
magx = 0;
magy = 0;
for a = 1:3
for b = 1:3
magx = magx + (kernelx(a, b) * image(i + a - 2, j + b - 2, k));
magy = magy + (kernely(a, b) * image(i + a - 2, j + b - 2, k));
end;
end;
edges(i,j,k) = sqrt(magx^2 + magy^2);
end;
end;
end;
这是我测试过的图像:
这是结果:
我不知道从哪里开始,我已经尝试过细线或阈值,我应该采取哪些步骤来使这个运行更好?