Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C语言中提取图像的正面形状_C#_Image Processing_Aforge - Fatal编程技术网

C# 如何在C语言中提取图像的正面形状

C# 如何在C语言中提取图像的正面形状,c#,image-processing,aforge,C#,Image Processing,Aforge,可以提取图像前面的任何形状吗 假设我们有两个物体的图像,一个在前面,另一个在后面,还有一个空白或透明的背景 我们可以提取前面的图像并将其放置在新图像中吗 这可以通过检测正面形状的边缘然后裁剪来实现吗 这篇文章与我的问题很接近: 但我想完全自动化 任何帮助都将不胜感激 提前谢谢。我想你不能完全自动化;然而,可能有一些半自动化的方法,至少,您需要一些先验信息,例如对象可以放置多远。以下是我的一些建议 首先,你有执行学术论文的经验,你有一些关于物体位置深度的先验信息 从internet下载场景深度图像

可以提取图像前面的任何形状吗

假设我们有两个物体的图像,一个在前面,另一个在后面,还有一个空白或透明的背景

我们可以提取前面的图像并将其放置在新图像中吗

这可以通过检测正面形状的边缘然后裁剪来实现吗

这篇文章与我的问题很接近:

但我想完全自动化

任何帮助都将不胜感激


提前谢谢。

我想你不能完全自动化;然而,可能有一些半自动化的方法,至少,您需要一些先验信息,例如对象可以放置多远。以下是我的一些建议

首先,你有执行学术论文的经验,你有一些关于物体位置深度的先验信息

从internet下载场景深度图像数据库 获取数据库的平均值 根据场景要点查询输入图像的K近邻[1] 应用SIFT流根据输入场景对齐数据库场景 推断深度 从图像中删除特定范围。 可以推断出输入图像的粗略深度图。通过使用此选项,您将尝试推断输入图像的深度贴图,然后删除包含对象的特定深度范围。你可以查阅论文[2]以获得更详细的解释

来自的深度贴图示例

第二种方式假设:算法结束时允许人工输入。, -分割图像只需稍加搜索,即可找到最先进的算法 -选择要删除的轮廓

图像分割示例

参考资料:

[1] 奥德奥利瓦 现场要点

[2] 卡什,K。;刘,C ;。;康,S.B。
IEEE模式分析和机器智能交易TPAMI,2014。

OpenCV提供了提取物体轮廓的选项。因此,将图像转换为灰度,并将其置于打开的CV中,检测图像中的所有轮廓。并从中选择符合您要求的轮廓。 因为您的项目是在C上,所以您可以看看Emgu CV,它是OpenCV的跨平台.Net包装器。请参考下面的url,您可以在这里下载Emgu CV的示例


按照一般的提问方式,答案是:不,你不能自动区分两个任意对象。如果你给我们看几个典型的例子,我们可能会想到一些提示,如何解决这类图像的问题,但一般的解决方案只能是一个半自动的过程。C和a在标记中指定,因此OpenCV几乎不是一个选项。你可能会指出EmguCV是一个C语言的替代品,但是。看起来是一个很好的起点,我会尝试并返回结果。谢谢。我真的很感谢你的帮助,但是,我是个初学者,所以你的建议需要很长时间才能让我理解和试用。。