我希望计算图像I的梯度。我有两个选项:
[Gx, Gy] = gradient(I);
g = sqrt(Gx.^2+Gy.^2);
和
[g,~] = imgradient(I, 'sobel');
我的问题是
第一选项中使用的梯度方法是什么?
使用Sobel方法找到梯度的好处是什么?
谢谢
这是我尝试过的内容
I=zeros([128 128]);
I(50:100,50:100)=100;
[Gx, Gy] = gradient(I);
g1 = sqrt(Gx.^2+Gy.^2);
[g2,~] = imgradient(I, 'sobel');
subplot(121);imshow(g1,[]);title('First option')
subplot(122);imshow(g2,[]);title('Second option')
当噪声添加到图像中时,差异将更加明显。I=zeros([128 128]);
I(50:100,50:100)=100;
%% Add noise image;
noiseStd=5;
I_noise = I + (noiseStd * randn([128, 128]));
[Gx, Gy] = gradient(I_noise);
g1 = sqrt(Gx.^2+Gy.^2);
[g2,~] = imgradient(I_noise, 'sobel');
subplot(121);imshow(g1,[]);title('First option')
subplot(122);imshow(g2,[]);title('Second option')
作为可视化,第二个选项提供了更多的亮度值。