关于FCN的数据集着色说明

版权声明:本文为博主原创文章,转载请注明原地址。 https://blog.csdn.net/xiamentingtao/article/details/78711206

前方我们讲解了《 FCN-数据篇》。里面包含了如何制作类似pascal voc的label。很大篇幅在谈如何着色,如何转化为索引图像。 由于一些内容参考网上的资料,所以对里面的一些操作含义也有些糊涂。 其实网上的东西也不都对,很多人云亦云。所以需要我们仔细甄别。 其中我就发现了一个错误。我们来从头谈起。

  1. pascal voc数据集
    当我们从网上下载pascal voc2012的数据集,会发现SegmentationClass文件里的标注都是彩色图像。

    这里写图片描述

    但是查看其属性,发现其位深为8.

    这里写图片描述

一般情况下,彩色图像都是rgb格式,所以应该是24位,但这里是8位,其实这表明图像是索引格式。
里面8位存放的是索引值,区间范围[0,255]。图像应该还包含一个map,对应着每个索引的颜色。
我们用matlab 查看索引:

>> im=imread('H:\data\VOCtrainval_11-May-2012\VOCdevkit\VOC2012\SegmentationClass\2007_000346.png');
>> info=imfinfo('H:\data\VOCtrainval_11-May-2012\VOCdevkit\VOC2012\SegmentationClass\2007_000346.png');
>> info.Colormap

ans =

         0         0         0
    0.5020         0         0
         0    0.5020         0
    0.5020    0.5020         0
         0         0    0.5020
    0.5020         0    0.5020
         0    0.5020    0.5020
    0.5020    0.5020    0.5020
    0.2510         0         0
    0.7529         0         0
    0.2510    0.5020         0
    0.7529    0.5020         0
    0.2510         0    0.5020
    0.7529         0    0.5020
    0.2510    0.5020    0.5020
    0.7529    0.5020    0.5020
         0    0.2510         0
    0.5020    0.2510         0
         0    0.7529         0
    0.5020    0.7529         0
         0    0.2510    0.5020
    0.5020    0.2510    0.5020
         0    0.7529    0.5020
    0.5020    0.7529    0.5020
    0.2510    0.2510         0
    0.7529    0.2510         0
    0.2510    0.7529         0
    0.7529    0.7529         0
    0.2510    0.2510    0.5020
    0.7529    0.2510    0.5020
    0.2510    0.7529    0.5020
    0.7529    0.7529    0.5020
         0         0    0.2510
    0.5020         0    0.2510
         0    0.5020    0.2510
    0.5020    0.5020    0.2510
         0         0    0.7529
    0.5020         0    0.7529
         0    0.5020    0.7529
    0.5020    0.5020    0.7529
    0.2510         0    0.2510
    0.7529         0    0.2510
    0.2510    0.5020    0.2510
    0.7529    0.5020    0.2510
    0.2510         0    0.7529
    0.7529         0    0.7529
    0.2510    0.5020    0.7529
    0.7529    0.5020    0.7529
         0    0.2510    0.2510
    0.5020    0.2510    0.2510
         0    0.7529    0.2510
    0.5020    0.7529    0.2510
         0    0.2510    0.7529
    0.5020    0.2510    0.7529
         0    0.7529    0.7529
    0.5020    0.7529    0.7529
    0.2510    0.2510    0.2510
    0.7529    0.2510    0.2510
    0.2510    0.7529    0.2510
    0.7529    0.7529    0.2510
    0.2510    0.2510    0.7529
    0.7529    0.2510    0.7529
    0.2510    0.7529    0.7529
    0.7529    0.7529    0.7529
    0.1255         0         0
    0.6275         0         0
    0.1255    0.5020         0
    0.6275    0.5020         0
    0.1255         0    0.5020
    0.6275         0    0.5020
    0.1255    0.5020    0.5020
    0.6275    0.5020    0.5020
    0.3765         0         0
    0.8784         0         0
    0.3765    0.5020         0
    0.8784    0.5020         0
    0.3765         0    0.5020
    0.8784         0    0.5020
    0.3765    0.5020    0.5020
    0.8784    0.5020    0.5020
    0.1255    0.2510         0
    0.6275    0.2510         0
    0.1255    0.7529         0
    0.6275    0.7529         0
    0.1255    0.2510    0.5020
    0.6275    0.2510    0.5020
    0.1255    0.7529    0.5020
    0.6275    0.7529    0.5020
    0.3765    0.2510         0
    0.8784    0.2510         0
    0.3765    0.7529         0
    0.8784    0.7529         0
    0.3765    0.2510    0.5020
    0.8784    0.2510    0.5020
    0.3765    0.7529    0.5020
    0.8784    0.7529    0.5020
    0.1255         0    0.2510
    0.6275         0    0.2510
    0.1255    0.5020    0.2510
    0.6275    0.5020    0.2510
    0.1255         0    0.7529
    0.6275         0    0.7529
    0.1255    0.5020    0.7529
    0.6275    0.5020    0.7529
    0.3765         0    0.2510
    0.8784         0    0.2510
    0.3765    0.5020    0.2510
    0.8784    0.5020    0.2510
    0.3765         0    0.7529
    0.8784         0    0.7529
    0.3765    0.5020    0.7529
    0.8784    0.5020    0.7529
    0.1255    0.2510    0.2510
    0.6275    0.2510    0.2510
    0.1255    0.7529    0.2510
    0.6275    0.7529    0.2510
    0.1255    0.2510    0.7529
    0.6275    0.2510    0.7529
    0.1255    0.7529    0.7529
    0.6275    0.7529    0.7529
    0.3765    0.2510    0.2510
    0.8784    0.2510    0.2510
    0.3765    0.7529    0.2510
    0.8784    0.7529    0.2510
    0.3765    0.2510    0.7529
    0.8784    0.2510    0.7529
    0.3765    0.7529    0.7529
    0.8784    0.7529    0.7529
         0    0.1255         0
    0.5020    0.1255         0
         0    0.6275         0
    0.5020    0.6275         0
         0    0.1255    0.5020
    0.5020    0.1255    0.5020
         0    0.6275    0.5020
    0.5020    0.6275    0.5020
    0.2510    0.1255         0
    0.7529    0.1255         0
    0.2510    0.6275         0
    0.7529    0.6275         0
    0.2510    0.1255    0.5020
    0.7529    0.1255    0.5020
    0.2510    0.6275    0.5020
    0.7529    0.6275    0.5020
         0    0.3765         0
    0.5020    0.3765         0
         0    0.8784         0
    0.5020    0.8784         0
         0    0.3765    0.5020
    0.5020    0.3765    0.5020
         0    0.8784    0.5020
    0.5020    0.8784    0.5020
    0.2510    0.3765         0
    0.7529    0.3765         0
    0.2510    0.8784         0
    0.7529    0.8784         0
    0.2510    0.3765    0.5020
    0.7529    0.3765    0.5020
    0.2510    0.8784    0.5020
    0.7529    0.8784    0.5020
         0    0.1255    0.2510
    0.5020    0.1255    0.2510
         0    0.6275    0.2510
    0.5020    0.6275    0.2510
         0    0.1255    0.7529
    0.5020    0.1255    0.7529
         0    0.6275    0.7529
    0.5020    0.6275    0.7529
    0.2510    0.1255    0.2510
    0.7529    0.1255    0.2510
    0.2510    0.6275    0.2510
    0.7529    0.6275    0.2510
    0.2510    0.1255    0.7529
    0.7529    0.1255    0.7529
    0.2510    0.6275    0.7529
    0.7529    0.6275    0.7529
         0    0.3765    0.2510
    0.5020    0.3765    0.2510
         0    0.8784    0.2510
    0.5020    0.8784    0.2510
         0    0.3765    0.7529
    0.5020    0.3765    0.7529
         0    0.8784    0.7529
    0.5020    0.8784    0.7529
    0.2510    0.3765    0.2510
    0.7529    0.3765    0.2510
    0.2510    0.8784    0.2510
    0.7529    0.8784    0.2510
    0.2510    0.3765    0.7529
    0.7529    0.3765    0.7529
    0.2510    0.8784    0.7529
    0.7529    0.8784    0.7529
    0.1255    0.1255         0
    0.6275    0.1255         0
    0.1255    0.6275         0
    0.6275    0.6275         0
    0.1255    0.1255    0.5020
    0.6275    0.1255    0.5020
    0.1255    0.6275    0.5020
    0.6275    0.6275    0.5020
    0.3765    0.1255         0
    0.8784    0.1255         0
    0.3765    0.6275         0
    0.8784    0.6275         0
    0.3765    0.1255    0.5020
    0.8784    0.1255    0.5020
    0.3765    0.6275    0.5020
    0.8784    0.6275    0.5020
    0.1255    0.3765         0
    0.6275    0.3765         0
    0.1255    0.8784         0
    0.6275    0.8784         0
    0.1255    0.3765    0.5020
    0.6275    0.3765    0.5020
    0.1255    0.8784    0.5020
    0.6275    0.8784    0.5020
    0.3765    0.3765         0
    0.8784    0.3765         0
    0.3765    0.8784         0
    0.8784    0.8784         0
    0.3765    0.3765    0.5020
    0.8784    0.3765    0.5020
    0.3765    0.8784    0.5020
    0.8784    0.8784    0.5020
    0.1255    0.1255    0.2510
    0.6275    0.1255    0.2510
    0.1255    0.6275    0.2510
    0.6275    0.6275    0.2510
    0.1255    0.1255    0.7529
    0.6275    0.1255    0.7529
    0.1255    0.6275    0.7529
    0.6275    0.6275    0.7529
    0.3765    0.1255    0.2510
    0.8784    0.1255    0.2510
    0.3765    0.6275    0.2510
    0.8784    0.6275    0.2510
    0.3765    0.1255    0.7529
    0.8784    0.1255    0.7529
    0.3765    0.6275    0.7529
    0.8784    0.6275    0.7529
    0.1255    0.3765    0.2510
    0.6275    0.3765    0.2510
    0.1255    0.8784    0.2510
    0.6275    0.8784    0.2510
    0.1255    0.3765    0.7529
    0.6275    0.3765    0.7529
    0.1255    0.8784    0.7529
    0.6275    0.8784    0.7529
    0.3765    0.3765    0.2510
    0.8784    0.3765    0.2510
    0.3765    0.8784    0.2510
    0.8784    0.8784    0.2510
    0.3765    0.3765    0.7529
    0.8784    0.3765    0.7529
    0.3765    0.8784    0.7529
    0.8784    0.8784    0.7529

或者

[im,map]=imread('H:\data\VOCtrainval_11-May-2012\VOCdevkit\VOC2012\SegmentationClass\2007_000346.png');

如果进一步地想要显示索引图像或者转为rgb,可以:

[cdata,map] = imread( filename )         %读索引图像文件
if ~isempty( map )     
   rgb = ind2rgb( cdata, map );         %将索引图像数据转为RGB图像数据
end 
imshow(rgb )
imshow(cdata,map) %这样读也可以

根据上面显示的map,我们发现与《 FCN-数据篇》的pascal voc的colormap完全一致。
另外需要注意:cdata是从0开始,对应着map的第一行。

自定义数据

根据前面《 FCN-数据篇》 的生成
自定义数据的方法,包括:
1. 使用labelme标注图像,生成灰度图像
2. 将灰度标签图像转化为rgb 24位图像,根据pascal voc的colormap,使用函数label2rgb
3. 将24位png图转换为8位png图。生成索引图像

其中第3步很重要,先前网上的资料有误。之前的代码是:

dirs=dir('F:/xxx/*.png');
for n=1:numel(dirs)
     strname=strcat('F:/xxx/',dirs(n).name);
     img=imread(strname);
     [x,map]=rgb2ind(img,256);
     newname=strcat('F:/xxx/',dirs(n).name);
     imwrite(x,map,newname,'png');
end

这里也生成了一个map,当时我就很疑惑为什么这里还有一个map呢?
于是试验了一下:

>> im=imread('G:\deeplearning\FCN_train-master\xxx.png');
>>  [a,map2]=rgb2ind(im,256);
>> map2

map2 =

         0         0         0
    0.5020         0         0
         0         0    0.5020
    0.5020         0    0.5020
         0    0.5020         0
    0.5020    0.5020         0

显然这里的map与pascal voc的map不一致了,会导致很严重的问题。
因此正确的是:

>> im=imread('G:\deeplearning\FCN_train-master\xxx.png');
>> map=labelcolormap(256);
>> x=rgb2ind(im,map);
>> imshow(x,map)
>> imwrite(x,map,'test.png','png')

其中第二步就是生成pascal voc的colormap,可以在《 FCN-数据篇》 查找。

二分类标签数据的制作

对于二分类问题而言,但我们标注好了图像语义后,我们常常得到的是黑白灰度图像。比如前景部分用255显示,背景用0显示。而且有可能24位,也可能是8位。

这时我们需要做两件事:
1. 将图像转化为24位
2. 生成8位索引图像
代码如下:

root='H:\data\IrsData\iris_ground-truth\MICHE_subset\';
input_dir=strcat(root,'ground truth\');
output_dir=strcat(root,'temp\');
src_type='tiff';
files = dir([input_dir, '*.', src_type]);
n = length(files);

for i = 1:n 

    [filename, type] = strtok(files(i).name, '.');

    im_src = imread([input_dir, files(i).name]);
    info=imfinfo([input_dir, files(i).name]);
    if info.BitDepth==8  %转化为24位rgb
        im_src=cat(3,im_src,im_src,im_src);
    end
   [x,map]=rgb2ind(im_src,2);
    newname=strcat(output_dir,filename,'.png');
    imwrite(x,map,newname,'png');

end

至此生成的图像时索引图像,二分类,前景为白色,背景为黑色,索引值为0,1.

阅读更多

扫码向博主提问

xiamentingtao

随便问吧,无论学术还是人生
  • 擅长领域:
  • cv
  • math
  • 考博
  • 算法
  • AI
去开通我的Chat快问

没有更多推荐了,返回首页