当前位置: 首页 > 知识库问答 >
问题:

在图像中查找更新的矩形

莫兴言
2023-03-14

第一个http://storage.thelogin.ru/stackoverflow/find-updated-regangles-in-image/1.png第二个http://storage.thelogin.ru/stackoverflow/find-updated-regangles-in-image/2.png

ImageMagick的compare告诉我这些像素已更新:

比较http://storage.thelogin.ru/stackoverflow/find-updated-regangles-in-image/3.png

所以我需要重新绘制这些区域(已经概述了其中的第一个区域):

比较http://storage.thelogin.ru/stackoverflow/find-updated-regangles-in-image/4.png

共有1个答案

诸龙野
2023-03-14

正如ImageMagick为您所做的那样,在实际查找发生变化的区域时,您可以逐个像素计算差异(例如异或)。差异为0的区域没有改变。

从你的问题上看不清楚是涂装本身慢,还是仅仅是重新涂装数据的传输。也不清楚在传输的另一端可以进行什么样的编码/解码。您是否必须按照指定的方式发送数据,或者如果您愿意,您可以用另一种方式对其进行编码?

您的数据包每个矩形有8个字节的开销“(一个字节表示魔术字,一个字节表示校验和,六个字节表示区域坐标,两个字节表示每个像素)”。我从每个像素的两个字节中得出颜色深度是16位?因此,由于开销的原因,您概述的一些最小的矩形实际上要比将它们与其他矩形组合并在未更新的区域上重新发送一些数据花费更多。

找到每个矩形都有开销的实际问题类似于ITA软件提出的“草莓地”雇用问题。原来的链接是死的,但这里是某人的解决方案与问题描述。

在57600波特率下,每秒发送7200个字节,即3600个像素,每像素发送两个字节。作为一个正方形,这是一个微不足道的60x60。当然,您在示例中概述了更多的内容,这还没有计算开销。

接收端显示器的刷新率也需要考虑。如果显示器每秒刷新60次,而你每秒只能发送一个60x60平方,这会是什么样子?

要考虑的事项:

  • 减小颜色深度
  • 每条扫描线的游程长度编码像素差
  • 尝试对每个区域进行更大的压缩,但要注意开销
  • 发送非图形数据并让接收者计算图形(例如,在本例中,发送已更改的文本、更新的时间等,并让接收者绘制进度条等)
  • 放弃这种疯狂
 类似资料:
  • 问题内容: 我有两个从PIL图像转换的Numpy数组(3维uint8)。 我想查找第一张图像是否包含第二张图像,如果是,则找出匹配的第一张图像内左上像素的坐标。 有没有一种方法可以在Numpy中以足够快的方式完成此操作,而不是使用(4!非常慢)纯Python循环? 2D示例: 怎么做这样的事情? 然后将是。 问题答案: 这可以使用SciPy的公司来完成correlate2d,然后用argmax找到

  • 我使用了Canny边缘检测器来检测边缘,下面是输出。我需要检测图像中边缘的密度,并选择密度较高的区域。如何在opencv中实现这一点。如何使用opencv查找高强度像素的密度? 如何获得以下输出?

  • 这是我得到的错误消息

  • 我正在使用标记从Docker运行Jenkins。这个标记后面是版本。现在有一个新的版本:。Docker不会自动检查它。我必须执行以获得新版本。 但是如何检查标签是否有更新的构建呢? 编辑:我想说明:这不是复制品!我问如何检查更新的Docker图像可用。我知道如何升级(正如我上面所说的)。

  • 我试图从opengl FrameBuffer中保存的深度数据渲染三维点云。基本上,我从不同的n个视点(已经知道)对以(0,0,0)为中心的渲染模型取了不同的深度样本。我成功地保存了深度图,但现在我想从这些深度图中提取x,y,z。为此,我从图像向世界反投影点。为了得到世界坐标,我使用以下方程P=K_inv[Rt]_inv*P。来计算世界坐标。 为了计算图像的本质矩阵,我使用了来自opengl相机矩阵

  • 此外,我已经把我的矩形在锚窗,如果这是重要的知道。