如何在python opencv中实现SIS阈值

时间:2019-06-06 09:59:48

标签: python opencv

在Aforge.net中,我看到了一个名为SIS(简单图像统计)阈值的阈值。如何在opencv python中实现相同的阈值设置?注释中提供了一个链接。

1 个答案:

答案 0 :(得分:0)

我不太了解OpenCV。但这就是我在Bash Unix上的ImageMagick 7命令行中执行的操作。

需要IM 7(默认为HDRI)且具有clamp = off,以避免对超出量子范围的值(对于非HDRI会发生这种情况)进行卷积的裁剪。

我注意到-scale 1x1!将计算平均值,而不是总和。但是,由于分子和分母都具有相同的像素数,所以该比率是求和还是求均值都没有关系。

输入:

enter image description here

wt=`magick sample11.png \
\( -clone 0 -define convolve:scale=! -define compose:clamp=off -morphology convolve "3x1: -1,0,1" +duplicate -compose multiply -composite -evaluate pow 0.5 \) \
\( -clone 0 -define convolve:scale=! -define compose:clamp=off -morphology convolve "1x3: -1,0,1" +duplicate -compose multiply -composite -evaluate pow 0.5 \) \
-delete 0 -evaluate-sequence max \
-scale 1x1! -format "%[fx:u]" info:`

wtI=`magick sample11.png \
\( -clone 0 -define convolve:scale=! -define compose:clamp=off -morphology convolve "3x1: -1,0,1" +duplicate -compose multiply -composite -evaluate pow 0.5 \) \
\( -clone 0 -define convolve:scale=! -define compose:clamp=off -morphology convolve "1x3: -1,0,1" +duplicate -compose multiply -composite -evaluate pow 0.5 \) \
\( -clone 1,2 -evaluate-sequence max \) \
-delete 1,2 \
-evaluate-sequence multiply \
-scale 1x1! -format "%[fx:u]" info:`

thresh=`convert xc: -format "%[fx:100*$wtI/$wt]" info:`
echo $thresh
50.0114

magick sample11.png -threshold $thresh% result.png


enter image description here

以下是一些有用的链接,可用于在Python OpenCV中进行卷积,差,绝对值,乘法和均值:

https://www.pyimagesearch.com/2016/07/25/convolutions-with-opencv-and-python/

https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html

但是,我认为它在真实图像上做得不好。我试了几次。这是一个示例:

enter image description here

这是结果:

enter image description here

所以我怀疑此阈值化的目标是什么或在哪种类型的图像上效果很好?