[Lab 색상 공간] cifar-10 이미지 데이터를 읽고 RGB 이미지를 Lab 이미지로 변환하는 방법(Python)

8275 단어 화상 처리Python

의 목적


cifar-10 이미지 데이터를 읽고 RGB를 Lab로 변환

사전 준비


가져오기

import pickle
import numpy as np
import matplotlib.pyplot as plt
import cv2

그림 불러오기


cifar-10 데이터 세트에서 이미지 데이터 세트 다운로드

이미지의 내용(cifar-10: 낙관 459394;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

  • Type 10 32x32 컬러 이미지 60000
  • RGB 전체 색상 이미지: RGB(붉은색/녹색/파란색) 3가지 색상의 조합으로 각각 0~255단계의 256단계
  • 하나의 데이터는 기본적으로(32,32) 또는(32,32,3)(=합계 3072개 요소)의 다차원 배열의 형상
  • "pickled"대상의 파일을 열고 사전으로 돌아가기
    def unpickle(file):
        import pickle
        with open(file, 'rb') as fo:
            dict = pickle.load(fo, encoding='bytes')
        return dict
    
    (unpickle 함수 인용자cifar-10 데이터 세트

    사전의 내용(cifar-10, 하나의 정보 459394;, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보, 하나의 정보

  • 데이터 - 10000×3072nupy의 배열 uint8.배열된 줄에는 32 x 32의 컬러 이미지가 저장되어 있습니다.첫 번째 1024항목은 빨간색 채널 값을 포함하고 다음 1024항목은 녹색을 포함하며 마지막 1024항목은 파란색을 포함한다.그림은 줄의 우선순위에 따라 저장되기 때문에, 배열된 첫 번째 32개의 항목은 그림의 첫 번째 줄의 빨간색 채널 값입니다.
  • 라벨-0~9의 범위의 10000개의 수치 목록.색인 i의 번호는 그룹 데이터의 i장 이미지의 라벨을 표시합니다.
  • data_batch_읽기 1

    # バッチ1を読み込み
    data_batch_1 = unpickle('cifar-10-batches-py/data_batch_1')
    
    data_batch_1_data.shape # -> (10000, 3072)
    

    컬러 이미지로 변환된 Numpy 정렬


    사전은 열의 Numpy 정렬이므로 색상 이미지의 Numpy 정렬로 변환됩니다.
    # 1 列の Numpy 配列を 32 x 32 のカラー画像の Numpy 配列に変換
    def data_to_array(data):
        ar1 = np.empty((32, 32, 3), dtype='uint8')
        data1 = data.reshape(3, 32, 32)
        for i in range(3):
            ar1[:, :, i] = data1[i, :, :]
        return ar1
    
    # バッチ1データ(10000件)を 32 x 32 のカラー画像の Numpy 配列に変換しリストに格納
    data_batch_1_img_list = list()
    
    for data in data_batch_1_data:
        img = data_to_array(data)
        #print(img.shape)
        data_batch_1_img_list.append(img)
    
    len(data_batch_1_img_list) # -> 10000
    
    type(data_batch_1_img_list[0]) # -> numpy.ndarray
    

    나타내다


    컬러 이미지로 변환된 Numpy 정렬 목록을 표시합니다.
    # カラー画像を表示
    def check_image(n):
        plt.imshow(data_batch_1_img_list[n])
    
    chek_image(0)
    

    Lab 이미지로 변환


    Lab 이미지는?


    이어 "랩 색상 공간은 보색 공간의 일종으로 밝기를 나타내는 차원 L과 보색 차원을 가진 a와 b로 CIE XYZ 색상 공간의 좌표를 비선형으로 압축한 것"이라며 "RGB나 CMYK와 달리 랩 색상 공간은 사람과 비슷한 시각으로 설계됐다"고 덧붙였다.
    (출처: https://ja.wikipedia.org/wiki/Lab%E8%89%B2%E7%A9%BA%E9%96%93

    Lab 이미지로 변환하여 표시합니다.

    # rgb を Lab に変換
    img_Lab = cv2.cvtColor(data_batch_1_img_list[0], cv2.COLOR_RGB2Lab)
    img_L, img_a, img_b = cv2.split(img_Lab)
    plt.imshow(img_Lab)
    
    img_Lab.shape # -> (32, 32, 3)
    

    좋은 웹페이지 즐겨찾기