图像处理库OpenCV有一个名为RegionOfInterest的概念,它使大多数函数仅在该区域上运行。该区域可以设置,移动,取消等等。
我正在研究类似的应用程序数据,我正在考虑使用类似的模式,选择一个区域并在该区域内进行分析和处理。
感兴趣的区域是推荐的设计模式吗?据我所知,它提高了OpenCV的性能,OpenCV是一个需要高性能的应用程序。我的应用程序将受益于高性能,但它不像OpenCV那样重要。
有哪些替代品?我正在考虑创建一个解决相同问题的Region对象,但是,例如,可以从同一组数据创建多个区域。这种方法有什么严重的缺点吗?
答案 0 :(得分:1)
感兴趣区域实际上与您正在处理的对象的性质有关:图像,它是连续的2D(或更高维)格子或定期采样点(像素)。在图像处理中仅对图像的某些部分(即感兴趣的区域)起作用是非常有用的:它可以加速处理,或者如果仅保留ROI则甚至可以节省一些存储器。 ROI的一大优势是,它们必须采用简单的几何形状,如矩形,因此非常容易处理。
如果您的数据没有图像这样的结构,您可以始终使用适当的设计模式,例如Composite。使用复合模式,您可以设置(子)数据组,并对应用于组中每个元素的组执行操作。
答案 1 :(得分:1)
根据您的描述,它听起来像Observer的变体。这些函数仅“观察”系统状态的特定部分,并且仅在该状态下被激活。
所以我的答案是肯定的:)
答案 2 :(得分:0)
对我而言,“感兴趣的区域”对应于您所谓的“区域”对象的单例。因此,您的决定归结为决定您是否需要/需要/能够负担一个或多个“区域”对象。
线程安全或重入是一个问题吗?
答案 3 :(得分:0)
感兴趣的区域可能不是 design 模式http://en.wikipedia.org/wiki/Software_design_pattern。 设计模式(加上或减去几个)是http://en.wikipedia.org/wiki/Design_Patterns_%28book%29中的模式。有很多其他类型的模式。见http://hillside.net/patterns/
答案 4 :(得分:0)
要识别 ROI,执行我们感兴趣的实际算法至关重要。
我致力于条形码识别,并且考虑到实际解决解码阶段的开源库的可用性,我遇到了在没有投资回报率的情况下执行任务的难度。
算法被设计为在某些特定的类型上运行良好,如果数据,我会说在实际图像处理中ROI识别几乎是必需。