我有图像(6000 * 6000)坚决.是否相同:将其大小调整为(1000 * 1000),然后调整为(512 * 51



我在服务器上有大约200GB+图像(约6000 * 6000(数据。出于可移植的原因,我希望我可以将其大小(cv2(调整为(1000 * 1000(,然后将数据传输到另一个云,然后重新调整为(512 * 512(并执行一些简单的分类任务。调整大小将为我节省很多生命。我只是想知道这样做,除了将6000 * 6000直接调整为512 * 512之外,数据是否会丢失一些信息?

结果应该不同,但我不知道它会如何影响我的模型准确性。

img2= cv2.resize(img, (1000, 1000))
img3=cv2.resize(img, (512, 512))
img4=cv2.resize(img2, (512, 512))
img3==img4
array([[[ True,  True,  True],
[ True,  True,  True],
[ True,  True,  True],
...,
[ True, False,  True],
[ True, False,  True],
[ True,  True,  True]],
[[ True,  True,  True],
[ True,  True,  True],
[ True,  True,  True],
...,
[ True,  True, False],
[ True,  True,  True],
[ True,  True,  True]],
[[ True,  True,  True],
[ True,  True,  True],
[ True,  True,  True],
...,
[ True, False,  True],
[ True,  True,  True],
[ True,  True,  True]],
...,
[[ True,  True,  True],
[ True,  True,  True],
[ True,  True,  True],

当然,你会丢失信息。

假设您有一个 4 x 4 的图像:

xxxx
xoxo
xxxx
xoxo

示例图像是二进制的。现在,您将分辨率更改为 2 x 2。块,例如

xx
xo

需要在由新分辨率定义的新栅格中分配xo,因此它们更改为x。结果是一个新的 2 x 2 图像:

xx
xx

现在,您将它更改回 4 x 4 的分辨率。但是,在 2 x 2 图像中不再有任何可用o的信息,因此缩小会导致:

xxxx
xxxx
xxxx
xxxx

这显然是不同的。

这是一个微不足道的例子,发生多少数据丢失取决于格式的实现,特别是数据的重新呈现和存储方式。但总的来说 - 是的,显然存在信息丢失。

作为一个建议 - 根据你需要做什么,你可以将图像的 chucks 发送到服务器,对这些进行分类,接收结果,发送下一个 chuck,等等。当然,如果您希望对跨越整个图像的对象进行分类,那么这将不起作用。

最新更新