感兴趣区域是一个好的设计模式吗?

3
OpenCV图像处理库有一个称为“感兴趣区域(RegionOfInterest)”的概念,该概念会导致大多数函数只在该区域内运行。该区域可以设置、移动、取消等。
我正在开发类似的应用程序数据,并考虑使用类似的设计模式,选择一个区域,在该区域内进行分析和处理。
区域感兴趣是一种推荐的设计模式吗?我知道它可以提高OpenCV的性能,因为OpenCV是需要高性能的应用程序。我的应用程序也会从高性能中受益,但这并不像在OpenCV中那么重要。
有哪些替代方案?我正在考虑创建一个区域对象来解决同样的问题,但是例如可以从相同的数据集创建多个区域。这种方法是否有严重的缺点?
5个回答

1

感兴趣的区域与您正在处理的对象的性质密切相关:图像是连续的2D(或更高维)网格或定期采样点(像素)。在图像处理中,仅处理图像的某些部分即感兴趣的区域非常有用:它可以加快进程,甚至可以节省一些内存,如果只保留ROI。 ROI的一个重要优势是它们绑定到简单的几何形状,例如矩形,因此非常容易处理。

如果您的数据没有像图像那样的结构,则始终可以使用适当的设计模式,例如Composite。使用组合模式,您可以设置数据(子)组,并对应用于组中每个单个元素的组执行操作。


1
从您的描述来看,它听起来像是Observer的一个变体。这些函数仅“观察”系统状态的特定部分,并且只有在涉及到该部分时才会被激活。
所以我的答案是肯定的 :)

0
对我而言,“感兴趣的区域”对应于你所说的“区域”对象中的单例。因此,你需要决定是否需要一个或多个“区域”对象。
线程安全或可重入性是否是问题?

0

0
为了识别ROI,执行我们感兴趣的实际算法是关键。
我曾经从事条形码识别的工作,并鉴于开源库的可用性,可以解决解码阶段问题,但若没有ROI,执行任务将会很困难。
算法被设计成在某些特定的数据类型上运行良好,而我认为,在实际的图像处理中,ROI的识别几乎是必不可少的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接