Java中圆形图像的OpenCV模板匹配
我不总是有正方形/矩形的图像,有时我也应该匹配圆形图像。下面是两张图片的例子。Ball是模板图像,第二个是搜索模板的源。我可以使模板的背景透明,但这会产生错误,将其设置为白色会降低比赛分数,因为正如您在源图像上看到的,球周围没有白色。这仅仅是两个示例图片。你有什么建议/解决方案吗Java中圆形图像的OpenCV模板匹配,java,image,opencv,image-processing,template-matching,Java,Image,Opencv,Image Processing,Template Matching,我不总是有正方形/矩形的图像,有时我也应该匹配圆形图像。下面是两张图片的例子。Ball是模板图像,第二个是搜索模板的源。我可以使模板的背景透明,但这会产生错误,将其设置为白色会降低比赛分数,因为正如您在源图像上看到的,球周围没有白色。这仅仅是两个示例图片。你有什么建议/解决方案吗 如果知道属于模板的像素,可以编写匹配器 绝对差值总和试验(伪代码) mati,T//图像和模板 矢量模板像素 矩形滑动窗口 向量匹配率 对于图像中的所有行 更新滑动窗口 适用于图像中的所有颜色 更新滑动窗口 材料W=
如果知道属于模板的像素,可以编写匹配器 绝对差值总和试验(伪代码)
mati,T//图像和模板
矢量模板像素
矩形滑动窗口
向量匹配率
对于图像中的所有行
更新滑动窗口
适用于图像中的所有颜色
更新滑动窗口
材料W=I(滑动窗)
总和=0
对于模板中的所有行
对于模板中的所有列
if(模板_像素包含像素i)
总和+=abs(W(i)-T(i))
结束
结束
匹配率。回推(总和)
结束
结束
minMaxLoc(匹配率)
并在图像行上使用多线程对其进行优化如果您知道属于模板的像素,则可以编写匹配器 绝对差值总和试验(伪代码)
mati,T//图像和模板
矢量模板像素
矩形滑动窗口
向量匹配率
对于图像中的所有行
更新滑动窗口
适用于图像中的所有颜色
更新滑动窗口
材料W=I(滑动窗)
总和=0
对于模板中的所有行
对于模板中的所有列
if(模板_像素包含像素i)
总和+=abs(W(i)-T(i))
结束
结束
匹配率。回推(总和)
结束
结束
minMaxLoc(匹配率)
并在图像行上使用多线程对其进行优化如果您知道属于模板的像素,则可以编写匹配器 绝对差值总和试验(伪代码)
mati,T//图像和模板
矢量模板像素
矩形滑动窗口
向量匹配率
对于图像中的所有行
更新滑动窗口
适用于图像中的所有颜色
更新滑动窗口
材料W=I(滑动窗)
总和=0
对于模板中的所有行
对于模板中的所有列
if(模板_像素包含像素i)
总和+=abs(W(i)-T(i))
结束
结束
匹配率。回推(总和)
结束
结束
minMaxLoc(匹配率)
并在图像行上使用多线程对其进行优化如果您知道属于模板的像素,则可以编写匹配器 绝对差值总和试验(伪代码)
mati,T//图像和模板
矢量模板像素
矩形滑动窗口
向量匹配率
对于图像中的所有行
更新滑动窗口
适用于图像中的所有颜色
更新滑动窗口
材料W=I(滑动窗)
总和=0
对于模板中的所有行
对于模板中的所有列
if(模板_像素包含像素i)
总和+=abs(W(i)-T(i))
结束
结束
匹配率。回推(总和)
结束
结束
minMaxLoc(匹配率)
并在图像行上使用多线程对其进行优化没关系,您仍然可以使用
matchTemplate()
并获得优异的结果:
。顺便说一句,这是在那里共享的演示的输出。没关系,您仍然可以使用
matchTemplate()
并获得优异的结果:
。顺便说一句,这是在那里共享的演示的输出。没关系,您仍然可以使用
matchTemplate()
并获得优异的结果:
。顺便说一句,这是在那里共享的演示的输出。没关系,您仍然可以使用
matchTemplate()
并获得优异的结果:
。顺便说一句,这是在那里共享的演示的输出。我想你也可以使用直方图反投影。在那里,您还可以使用任意形状遮罩。将遮罩与反向投影图像卷积,您将在图像中对象出现的区域中检测到峰值,如下面的图像(颜色映射和缩放)所示 反向投影: 召集: 编辑: 这是基于此。我正在试验,希望能在博客上发表文章。 这是在C++中。< /P>
// model histogram: this is the football template
calcHist(&model32fc3, 1, (const int*)channels, modelMask, histModel, 3, (const int*)histSize, (const float**)ranges, true, false);
// image histogram
calcHist(&image32fc3, 1, (const int*)channels, Mat(), histImage, 3, (const int*)histSize, (const float**)ranges, true, false);
// ratio histogram
divide(histModel, histImage, histRatio);
cv::min(histRatio, 1.0, histRatio);
// backproject ratio histogram
calcBackProject(&image32fc3, 1, (const int*)channels, histRatio, backprj, (const float**)ranges);
// convolve the kernel with the backprojected image
filter2D(backprj, conv, CV_32F, modelMask);
我想你也可以用直方图反投影来做这个。在那里,您还可以使用任意形状遮罩。将遮罩与反向投影图像卷积,您将在图像中对象出现的区域中检测到峰值,如下面的图像(颜色映射和缩放)所示 反向投影: 召集: 编辑: 这是基于此。我正在试验,希望能在博客上发表文章。 这是在C++中。< /P>
// model histogram: this is the football template
calcHist(&model32fc3, 1, (const int*)channels, modelMask, histModel, 3, (const int*)histSize, (const float**)ranges, true, false);
// image histogram
calcHist(&image32fc3, 1, (const int*)channels, Mat(), histImage, 3, (const int*)histSize, (const float**)ranges, true, false);
// ratio histogram
divide(histModel, histImage, histRatio);
cv::min(histRatio, 1.0, histRatio);
// backproject ratio histogram
calcBackProject(&image32fc3, 1, (const int*)channels, histRatio, backprj, (const float**)ranges);
// convolve the kernel with the backprojected image
filter2D(backprj, conv, CV_32F, modelMask);
我想你也可以用直方图反投影来做这个。在那里,您还可以使用任意形状遮罩。将遮罩与反向投影图像卷积,您将在图像中对象出现的区域中检测到峰值,如下面的图像(颜色映射和缩放)所示 反向投影: 召集: 编辑: 这是基于此。我正在试验,希望能在博客上发表文章。 这是在C++中。< /P>
// model histogram: this is the football template
calcHist(&model32fc3, 1, (const int*)channels, modelMask, histModel, 3, (const int*)histSize, (const float**)ranges, true, false);
// image histogram
calcHist(&image32fc3, 1, (const int*)channels, Mat(), histImage, 3, (const int*)histSize, (const float**)ranges, true, false);
// ratio histogram
divide(histModel, histImage, histRatio);
cv::min(histRatio, 1.0, histRatio);
// backproject ratio histogram
calcBackProject(&image32fc3, 1, (const int*)channels, histRatio, backprj, (const float**)ranges);
// convolve the kernel with the backprojected image
filter2D(backprj, conv, CV_32F, modelMask);
我想你也可以用直方图反投影来做这个。在那里,您还可以使用任意形状遮罩。将遮罩与反向投影图像卷积,您将在图像中对象出现的区域中检测到峰值,如下面的图像(颜色映射和缩放)所示 反向投影: 召集: 编辑: 这是基于此。我正在试验,希望能在博客上发表文章。 这是在C++中。< /P>
// model histogram: this is the football template
calcHist(&model32fc3, 1, (const int*)channels, modelMask, histModel, 3, (const int*)histSize, (const float**)ranges, true, false);
// image histogram
calcHist(&image32fc3, 1, (const int*)channels, Mat(), histImage, 3, (const int*)histSize, (const float**)ranges, true, false);
// ratio histogram
divide(histModel, histImage, histRatio);
cv::min(histRatio, 1.0, histRatio);
// backproject ratio histogram
calcBackProject(&image32fc3, 1, (const int*)channels, histRatio, backprj, (const float**)ranges);
// convolve the kernel with the backprojected image
filter2D(backprj, conv, CV_32F, modelMask);
我不知道这是不是python