如何在javacv或opencv中开始图像处理之前提高图像质量?

时间:2012-07-15 12:53:11

标签: java image-processing opencv javacv

我有一张400x400图像的图像,用于识别不同的组件。但是,当我尝试使用大多数时间来识别组件时,它无法提供正确的答案。所以我需要知道javacv或opencv中是否有某种方法可以提高图像质量或增加图像尺寸而不影响图像质量?

这是我使用的示例图像。 (这是我可以获得的最大尺寸,我不能在项目中使用任何照片编辑软件,因为它是动态生成的图像。)

enter image description here

在我的图像处理中,我需要识别连接这些正方形的正方形和矩形。特别是我需要获得那些使用像素值的宽度和高度。

3 个答案:

答案 0 :(得分:3)

你可以将它缩放到任何尺寸,如果你可以对它进行矢量化......在你的情况下,背心很简单,因为你在图像中有一些简单的几何对象。

所以,在我看来,你的方法应该是这样的:

  1. 使用高阈值检测图像中的边缘(因为您有非常不同的对象)
  2. 向量化它们
  3. 将它们缩放到任何尺寸
  4. 您还应该查看以下链接:Increasing camera capture resolution in OpenCV

答案 1 :(得分:2)

如果您坚持图像处理,最简单的方法是应用equalizeHist()。这将增加对比度并改善后续步骤。

但是,这是一个biiiig'但',你为什么要这样做?刚看完这篇文章,我看到了另一种解决方案,快速谷歌证明我是对的:

  

Kabeja是一个用于解析,处理和转换的Java库   Autodesk的DXF格式。您可以使用CommandLine中的Kabeja或   嵌入您的应用程序。所有解析的数据都可以通过   类似DOM的API。

这意味着您可以以文本格式直接从该图像中提取所需的所有数据。可能就像“在x位置,有晶体管,或其他什么”。那么为什么你会将该文件渲染成图像,然后分析该图像以提取组件吗?

如果你是为学校做的(我知道很多学校的项目是这样的)我会建议你找到一个真正的问题来解决,并建议你的老师。你会更乐意做一些不完全废话的事情。

答案 2 :(得分:2)

根据{{​​3}}的建议,

对图像进行矢量化是最佳选择 您还可以使用锐化,饱和等增强工具。