我目前正在做一个项目,我需要编写软件来比较由相同区域组成的两个图像,并在差异周围画一个框。我在几个小时内用 c# .net 编写了程序,但很快意识到运行起来非常昂贵。以下是我实施它的步骤。
创建了一个存储每个像素的 x、y 坐标的 Pixel 类和一个存储像素列表以及宽度、高度、x 和 y 属性的 PixelRectangle 类。
循环遍历每个图像的每个像素,比较每个对应像素的颜色。如果颜色不同,我会使用该像素的 x,y 坐标创建一个新的像素对象,并将其添加到 pixelDifference 列表中。
接下来,我编写了一个递归检查 pixelDifference 列表中的每个像素的方法,以创建仅包含彼此直接相邻的像素的 PixelRectangle 对象。(很确定这个坏男孩造成了大部分破坏,因为它给了我一个堆栈溢出错误。)
然后,我根据存储在 PixelRectangle 对象列表中的像素计算出矩形的 x、y 坐标和尺寸,并在原始图像上绘制一个矩形以显示差异所在的位置。
我的问题是:我是否以正确的方式进行此操作?四叉树对这个项目有什么价值吗?如果您能给我有关如何通常实现此类目标的基本步骤,我将不胜感激。提前致谢。
- 戴夫。