gpt4 book ai didi

image-processing - minMaxLoc 最大值混淆

转载 作者:太空宇宙 更新时间:2023-11-03 22:06:35 30 4
gpt4 key购买 nike

我一直在使用 minMaxLoc 来计算通过在灰度图像上运行拉普拉斯滤波器获得的数据的最大值。我的简单意图是粗略估计锐度。我遇到了一个令人困惑的情况,我已经在这里讨论过。

对于一组图像,从 minMaxLoc 函数获得的最大值如 1360、1456,450 等。

    Laplacian(src_gray,dst,ddepth,kernel_size,scale,delta,BORDER_DEFAULT);
minMaxLoc(dst,&min,&estimate,&minLoc,&maxLoc,noArray());//Estimate is the max value

现在我只是尝试计算平均值,以便更好地了解图像中清晰度的分布。请注意,DST 是保存拉普拉斯算子数据的 Mat 变量。

    Size s = dst.size();
rows = s.height;
cols = s.width;
total = 0;
max = 0;
for(int k=0;k<rows;k++)
{
for(int l=0;l<cols;l++)
{
total = total + abs(dst.at<int>(k,l));
}
}
average = total/(rows*cols);

我得到了 2 个莫名其妙的结果。我获得的平均值不仅大于从 minMaxLoc 获得的最大值,而且在对一组图像进行尝试时有时还为负值。样本平均值为 22567,有时为 -25678。

当我使用 abs() 来获取拉普拉斯算子结果的绝对值时,负值的出现更加令人困惑。

为了正确理解,我自己计算了最大值,然后计算了平均值:

    Size s = dst.size();
rows = s.height;
cols = s.width;
total = 0;
max = 0;
for(int k=0;k<rows;k++)
{
for(int l=0;l<cols;l++)
{
if(abs(dst.at<int>(k,l))>max)
{
max = abs(dst.at<int>(k,l));
}
total = total + abs(dst.at<int>(k,l));
}
}
average = total/(rows*cols);

令人惊讶的是,我发现最大值是 8 位数字。

这就是我困惑的原因。 minMaxLoc 函数给出的最大值是多少?为什么 abs() 总的来说不起作用,为什么我得到 -ve 个平均值。?

如果代码中遗漏了某些内容,请原谅我,但这让我有些困惑。提前感谢您的帮助。

最佳答案

我认为你应该使用 .at 而不是 int(考虑到图像是灰度),否则值会溢出!

关于image-processing - minMaxLoc 最大值混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282412/

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