融和原图和标签图,python实现可视化标签数据,检测标定分割数据的好坏

融和原图和标签图,python实现可视化标签数据,检测标定分割数据的好坏

深度学习的重要环节是数据的采集,采集的数据到底能不能用,是否适合我们的应用场景,需要我们自己检查标定的数据,那么可视化标签数据显得尤为重要,下面是将分割数据映射到原图,判断数据好坏的python实现代码,希望能给大家启发,不足之处多多指教。

      下面的代码是以Appllo Scapes数据集为例子,涉及32类。如要引用,请修改相应的路径和文件名,并结合自己数据文件夹的实际情况遍历转换。

import numpy as np
import cv2
import os

def _draw_to_overlay_image(labimgs, name, srcimgs):
    num_examples = 2710 * 3384
    labimg = cv2.imread(labimgs)
    srcimg = cv2.imread(srcimgs)
    srcimg = np.reshape(srcimg, [num_examples, 3])  //原图
    labimg = np.reshape(labimg, [num_examples, 3])  //标签图
    label_mage=np.zeros([num_examples, 3], np.uint8) //定义融合后的新图矩阵
    colors=[[255,0,0],[0,255,0],[0,0,255],[139,0,0],[0,0,139],[139,0,139],[144,238,144],[0,139,139],[155,48,288],[255,62,150],[255,165,0],
            [255,211,155],[255,193,37],[255,255,0],[192,255,62],[0,255,255],[153,50,204],[255,162,0],[50,205,50],[0,255,255],
            [47,79,79],[119,136,153],[25,25,112],[123,104,238],[135,206,250],[0,100,0],[173,255,47],[188,143,143],[250,128,114],
            [205,102,29],[205,51,51],[205,16,118]] //每一个类别对应一种颜色

    lab_pix=[33,37,35,36,34,165,166,167,50,66,164,40,163,39,38,168,49,65,162,161,67,81,82,83,84,85,86,97,98,99,100,113]//每个类别对应的像素值

    yuv_from_rgb = np.array([[0.299, 0.587, 0.114],
                             [-0.14714119, -0.28886916, 0.43601035],
                             [0.61497538, -0.51496512, -0.10001026]])//YUV和RGB空间转换的参数矩阵
    rgb_from_yuv = np.linalg.inv(yuv_from_rgb)//求转置矩阵
    for i in range(0,num_examples):
        for a,b in enumerate(lab_pix):
            if labimg[i][0] == b:
                label_mage[i] = colors[a]//比对标签图中的像素值所属类别,然后下面进行颜色空间的转换
        Y = srcimg[i].dot(yuv_from_rgb[0].T.copy())
        U = label_mage[i].dot(yuv_from_rgb[1].T.copy())
        V = label_mage[i].dot(yuv_from_rgb[2].T.copy())
        rgb = np.array([Y, U, V]).dot(rgb_from_yuv.T.copy())
        if rgb[0] > 255: rgb[0] = 255//超出像素值255的全部设置为255,下同
        if rgb[1] > 255: rgb[1] = 255
        if rgb[2] > 255: rgb[2] = 255
        if rgb[0] < 0: rgb[0] = 0
        if rgb[1] < 0: rgb[1] = 0
        if rgb[2] < 0: rgb[2] = 0
        label_mage[i] = rgb
    rimg = np.reshape(label_mage, [2710, 3384, 3])
    cv2.imwrite(name, rimg)


if __name__ == '__main__':
    src_dir=os.walk('~/anaysis apollo/srcimg')  //需要可视化数据的原图路径
    i=1
    for path,b,img_list in src_dir:
        for srcimg in img_list:
            if srcimg.endswith('jpg'):
                labimg=path+'/'+srcimg.split('.')[0]+'_bin.png'  //找到对应的标签图
                if os.path.exists(labimg):
                    name = '~/anaysis apollo/mage/' + srcimg.split('.')[0] + '_mage.jpg'
                    srcimg= path + '/' + srcimg
                    _draw_to_overlay_image(labimg,name,srcimg)
                    print 'process %d' %i
                    i += 1
    print 'finish!!!'

原图:

标签图:

融合后的图:

融合后的图片中每种颜色代表一个分割图,可以清晰地观察标定数据的好坏。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值