我正在寻找OpenCV中的MatLab的min
函数的等价物,具有以下特定功能(取自the official Matlab documentation):
[M,i]=min(_)查找A的最小值的索引,并使用前面语法中的任何输入参数在输出向量i中返回它们。如果最小值出现多次,则MIN返回与第一次出现的索引对应的索引。
在我的具体案例中,我有两张图片。我想创建一个新的图像与每个像素的最小值(WRT这2个图像),我需要存储一个Map(即一个Mat
对象或类似的东西与类似的大小),其中Map的每个像素告诉我是从他的第一个或第二个图像的最小值(你可以认为他们是nm2图像,我想要采取的最小值通道的方式,并希望能够告诉我从哪个通道我得到了这个值)。
在OpenCV中有什么简单的方法可以做到这一点吗?
顺便说一句,它是针对Android应用程序的,所以Java Answers比C++更受欢迎。谢谢。
编辑:我可以想出一些循环解决方案,但我需要我的解决方案尽可能高效,所以我想看看是否有一些内置的函数
EDIT2-我没有寻找获得整个矩阵的最小/最大绝对值的解决方案-我希望它是以像素为单位的,包括一个Map,它告诉我从哪个图像中选择了该值。例如:
A = [1 2 ;
3 4 ]
B = [5 6 ;
1 2 ]
-->
min(A,B) = [1 2 ;
1 2 ]
// these are the actual values ^
minInd(A,B) = [1 1 ;
2 2 ]
// these are the indices ^ where 1 means it was taken from A, and 2 means it was taken from B
1条答案
按热度按时间ilmyapht1#
编辑:我最初的回答毫无用处
怎么样
从this开机自检。如果从原始图像
A
、B
和C=min(A,B)
开始,则可以定义D=A-C
。如果是D(i,j)==0
,则该值来自A
。如果是D(i,j)>0
,则像素值来自B
。如果
A
和B
保存浮点数,而不是整型,那么您当然必须使用一些小的容差来进行比较。