图片

时间:2018-02-13 19:09:14

标签: image image-processing data-structures

是否有方便的数据结构用于在图片中存储像素选择?

通过像素选择,我指的是使用选择工具获得的一组像素,例如图像编辑软件(矩形,套索,魔杖等)中的选择工具。可能存在漏洞,在一般情况下,选择比图片本身小(多)。

目标是能够保存/加载选择,显示所选像素只是一个单独的视图(边界框大小),使用特定算法中的选择(通常需要分割的算法)等。它应该使用尽可能少的内存尽可能使用空间,因为目标是将大量数据存储在数据库中。

到目前为止我找到的解决方案:

  • 布尔数组(图片大小/ 8)
  • (uint16,uint16)=>的列表如果选择中有很多像素,则效率不高
  • 列表数组:每行的像素系列列表

1 个答案:

答案 0 :(得分:3)

布尔数组将采用栅格的W x H位加上额外的记帐(例如ROI限制)。这大致与边界框的面积成比例。

每个选定像素的像素坐标列表将采用32位(2x16位)。与布尔数组相比,这是非常大的,除非选择非常空洞。

另一个有用的表示是行程编码,它逐行计算连续像素。这种表示每次运行大约需要16位。换句话说,当运行的平均长度是n个像素时,每像素16 / n位。这适用于大型填充形状,但对于孤立像素则效果不佳。

最后,您还可以考虑将形状的轮廓存储为像素列表(每像素32位)或Freeman链(每像素仅3位),这相对于完全列举。

正如您所看到的,选择是不安的,因为不同表示的效率很大程度上取决于选择的形状。另一个重要方面是给定表示可以方便地用于目标处理选择。