Python 我的形象(6000*6000)坚定。是否相同:将其大小调整为(1000*1000),然后调整为(512*512)并直接调整为(512*512)?;

Python 我的形象(6000*6000)坚定。是否相同:将其大小调整为(1000*1000),然后调整为(512*512)并直接调整为(512*512)?;,python,image,image-processing,computer-vision,image-resizing,Python,Image,Image Processing,Computer Vision,Image Resizing,我在一台服务器上有大约200GB以上的图像(大约6000*6000)数据。出于可移植的原因,我希望我可以将它的大小(cv2)调整为(1000*1000),然后将数据传输到另一个云,然后再重新调整为(512*512),并执行一些简单的分类任务。重新调整大小将拯救我很多生命。我只是想知道这样做,除了将6000*6000直接调整为512*512,数据还会丢失一些信息吗 结果应该是不同的,但我不知道这将如何影响我的模型精度 img2= cv2.resize(img, (1000, 1000)) img3

我在一台服务器上有大约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
需要在新分辨率定义的新光栅中指定
x
o
,因此它们将更改为
x
。结果是一个新的2 x 2图像:

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

xxxx
xxxx
xxxx
xxxx
这显然是不同的

这是一个简单的例子,数据丢失的程度取决于格式的实现,特别是数据的响应和存储方式。但总的来说——是的,信息明显丢失


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

当然,您会丢失信息

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

xxxx
xoxo
xxxx
xoxo

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

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

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

xxxx
xxxx
xxxx
xxxx
这显然是不同的

这是一个简单的例子,数据丢失的程度取决于格式的实现,特别是数据的响应和存储方式。但总的来说——是的,信息明显丢失


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

您无法测试此功能吗?建议:直接驻留到512x512,但在调整大小之前平滑输入图像(默认情况下,MATLAB
imresize
使用“抗锯齿”过滤器,而OpenCV不使用)。你需要一个大的平滑滤波器,我不知道如何确定它的大小。我做过测试,数值不同。但我只是想知道这会不会影响我的模型从技术上讲,两步图像大小调整会丢失一些细节,但对于图像分类来说,这应该不会有太大的区别。出于性能原因,在单个步骤中调整大小可能更可取,但额外调整大小步骤的开销不高。为什么不在传输之前在第一台服务器上直接调整大小至512x512?您无法测试此问题吗?建议:直接驻留在512x512,但在调整大小之前平滑输入图像(默认情况下,MATLAB
imresize
使用“抗锯齿”过滤器,而OpenCV不使用)。你需要一个大的平滑过滤器,我不知道如何确定它的大小。我做过测试,值不同。但我只是想知道这会影响我的模型。从技术上讲,两步图像大小调整会丢失一些细节,但对于图像分类来说,它应该不会有太大的区别。出于性能原因,一步调整大小可能更可取,但额外调整大小步骤的开销不高。为什么不在传输前在第一台服务器上直接调整到512x512?我建议对大型图像进行一些预处理,并在不进行任何分类的情况下找到感兴趣的部分,这样您就可以使用classif获得许多较小的图像边界框我建议对大型图像进行一些预处理,在没有任何分类的情况下找到感兴趣的部分,这样你就可以得到许多带有可分类对象的图像的较小边界框。