gpt4 book ai didi

algorithm - 渐变和渐变有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:44:23 24 4
gpt4 key购买 nike

我想计算图像 I 的梯度。我有两个选项

[Gx, Gy] = gradient(I);
g = sqrt(Gx.^2+Gy.^2);

[g,~] = imgradient(I, 'sobel');

我的问题是

  1. 第一个选项中使用的梯度法是什么?

  2. 用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')

enter image description here

图像加噪后,差异会更明显

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')

enter image description here

作为可视化,第二个选项提供了更多的亮度值

最佳答案

不同之处确实在于“Sobel”运算符。 sobel 算子是一个矩阵,它与图像进行卷积以计算其方向梯度。

sobel 运算符定义为(来自维基百科):

enter image description here

gradient 所做的只是方向差异。你可以将其解释为渐变做

Gx=[ 0 0 0;                Gx=[ 0 -1 0;
-1 0 1; and 0 0 0;
0 0 0] 0 1 0];

这种差异是因为当一个人拥有图像时,就知道它是连续域的离散化。 Sobel 运算符有助于考虑给定像素“周围”发生的事情。

关于algorithm - 渐变和渐变有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35893189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com