图像处理图片的格式对结果的影响

11 篇文章 1 订阅
10 篇文章 0 订阅

图像处理图片的格式对结果的影响

前言

   首先,写此篇博客是因为博主在使用不同的数据集进行显著性检测时当将训练集的规模变大时,效果反而变差,最后测试得到的结果显著图是一种全黑的状态,讲道理,这不应该,因为选用的都是广为使用的标准数据集(RGBD)。
   并且之前使用单独的数据集(DUT-RGBD)时结果是正常的,当加入两个性的数据集NJUD(1485张)和NLPR(800张)以及它们的增强一共32835张(详见论文:Depth-induced Multi-scale Recurrent Attention Network for Saliency Detection)时,效果反而下降,无法正确识别出显著性物体,一开始我以为是我的网络的问题,在仔细检查并且使用了其他的RGB数据集时(ECSSD和PASCAL-S Imgs)时发现效果都没问题,于是我觉得问题可能是出现在新加的这两个数据集上。

分析过程

   一开始,我觉得可能是RGB图片尺寸或处理时的通道数问题,可是通过cv2.imread()进行读取并输出他们的 shape 时,发现他们都是256*256的分辨率并且通道数均为3,所以既然RGB图片的格式是一致的,那么问题就很有可能出现在训练时的真值图(GT)上.由于GT都是黑白图片(白色区域表示显著图),所以一般我们在获取GT时都是采用PIL.Image.open()的方式来获取,经过获取,我发现两者确有不同,原先的DUT-RGBD的图片格式是:
<PIL.PngImagePlugin.PngImageFile image mode=L size=256x256 at 0x259D96BF9C8>
而新加入的两个数据集的GT图片格式是
<PIL.PngImagePlugin.PngImageFile image mode=1 size=256x256 at 0x259D985BAC8>
易看出两者的 mode 不同,原先的是‘L’,而新加的数据集mode是‘1’。??本着试一试的态度,我将新加入的数据集的GT的mode均转化为‘L’(方法是Img.convert('L)).然后再重新运行了下。发现之前全黑的问题不存在了,测试的结果集变正常了。??what,由于之前从未遇到过这种问题,因此也未考虑过这种问题。把测试成功的喜悦放在一旁,我们一起先来看看这两种模式的奥秘

原因分析

PIL.Image.open(path)具有9种不同的格式,分别是:
‘1’,‘L’,‘P’,‘RGB’,‘RGBA’,‘CMYK’,‘YCbCr’,‘I’,‘F’。这里主要聚集在‘1’和‘L’的区别上

mode==1

mode==1表示二值图片,非黑即白。它每个像素用8个bit表示,0表示黑,255表示白。以下是我们的彩色图片:
RGB
使用PIL.Image.open()打开时的格式:
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=256x256 at 0x200C1435F88>
当将其转换为mode=1时图片变成:
1
格式:
<PIL.Image.Image image mode=1 size=256x256 at 0x2916140E588>
可以看到像素非黑即白,呈点射装,有些过度像素均走向了极端。
放大看下
放大看下

mode==L

   模式“L”为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。在PIL中,从模式“RGB”转换为“L”模式是按照下面的公式转换的:
L = R * 299/1000 + G * 587/1000+ B * 114/1000
当将原RGB图转换为mode==L时,图片为:
L

格式为
<PIL.Image.Image image mode=L size=256x256 at 0x2CB54B3E608>

放大看下:
放大后
可以看到此图片为‘真’灰度图,个像素之间的过渡不再显得那么突兀。

再看我们的两种GT图
L格式
L格式

放大看下:
放大的L格式
1格式
1格式
放大看下:
放大的1格式
可以看到1模式相比较于L模式其锯齿状更为强烈,由于是黑白图所以我们的肉眼和很难判断出,但是在训练时不同模型对不同格式的GT处理不同,用错则会导致较大的噪声从而导致失败,这问题说大不大但很难察觉,所以我们在训练时必须根据自己的需求来确定自己的最终图片格式,这样才能避免引入不必要的麻烦!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值