OpenCV 中的 Matlab 最小等效项

Posted

技术标签:

【中文标题】OpenCV 中的 Matlab 最小等效项【英文标题】:Matlab min equivalent in OpenCV 【发布时间】:2017-12-24 13:49:30 【问题描述】:

我正在寻找 OpenCV 中 Matlab 的 min 函数的等效函数,具有此特定功能(取自 the official Matlab documentation):

[M,I] = min(___) 找到 A 的最小值并返回 它们在输出向量 I 中,使用任何 前面的输入参数 语法。如果出现最小值 不止一次,然后 min 返回 第一个对应的索引 发生。

在我的具体情况下,我有 2 张图片。我想创建一个具有每个像素最小值的新图像(这两个图像),并且我需要存储一个地图(即Mat 对象或类似大小的类似对象),其中地图的每个像素告诉我是从他的第一张图片还是第二张图片中获取最小值 (您可以将它们视为 n*m*2 图像,我想在通道上取最小值,并希望能够分辨出我从哪个通道得到这个值)。

在 OpenCV 中是否有一种简单的方法可以做到这一点?

顺便说一句,它适用于 android 应用程序,因此 Java 答案优于 C++。谢谢。

编辑:我可以为此想到一些循环解决方案,但我需要我的解决方案尽可能高效,所以我想看看是否有一些内置函数

EDIT2 - 我没有寻找获得 整个 矩阵的绝对最小值/最大值的解决方案 - 我想要它以像素为单位,包括地图它告诉我从哪个图像中选择了值。例如:

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

【问题讨论】:

min and max in opencv的可能重复 【参考方案1】:

编辑:我原来的答案没用

怎么样

MatExpr min(const Mat& a, const Mat& b)

来自this 的帖子。如果您从原始图像ABC=min(A,B) 开始,那么您可以定义D=A-C。如果D(i,j)==0,则该值源自A。如果D(i,j)>0,则像素值来源于B

如果 AB 持有浮点数而不是整数,那么您当然必须以一些小的公差进行比较。

【讨论】:

谢谢。我已经遇到过这个答案 - 它不是给了我总最大-最小的最小-最大位置(即 whole 矩阵中的最大/最小元素)吗?因为我想知道它来自哪里的 每个 像素,所以这对我没有帮助.. 很抱歉,我应该读完你的整个问题......也不应该将问题标记为重复......This 部分回答了你的问题,但没有给你有关数据来自哪个数组的信息...... 已更改答案,希望对您有所帮助

以上是关于OpenCV 中的 Matlab 最小等效项的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中Matlab的radon()等效函数

OpenCV中Matlab的filter2的等效函数

Opencv中的标准过滤器

c ++ opencv中的等价matlab代码

Excel 的 NORMSDIST 函数的 MATLAB 等效项是啥?

C# EmguCV Image.setValue(...) 方法的 C++ OpenCV 等效项