Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 scikit-learn을 활용해 이미지 픽셀 값을 확인하는 방법

데이터 전처리란 무엇인가?

데이터 전처리(pre-processing)란 다양한 소스 또는 단일 소스에서 수집한 모든 데이터를 공통 형식이나 균일한 데이터셋으로 정리하는 작업을 의미합니다.

실제 환경에서 수집되는 데이터는 결코 이상적이지 않습니다. 따라서 데이터에 누락된 셀, 오류, 이상치(outlier), 열 간 불일치 등 다양한 문제가 존재할 가능성이 높습니다.

이미지 역시 마찬가지입니다. 이미지가 올바르게 정렬되어 있지 않거나, 선명하지 않거나, 파일 크기가 지나치게 클 수 있습니다. 전처리의 목표는 바로 이러한 불일치와 오류를 제거하는 데 있습니다.

flatten 함수로 픽셀 값 추출하기

이미지의 픽셀 값을 얻으려면 내장 함수인 'flatten'을 사용합니다. 이미지를 읽어 들인 후 픽셀 값은 데이터프레임(DataFrame) 형태로 저장되며, 'flatten' 함수는 RGB 이미지의 3차원 구조를 1차원으로 변환하여 픽셀 값을 데이터프레임에 담아 줍니다.

행이 매우 많은 데이터프레임 전체를 출력하는 대신, 데이터프레임의 차원(크기)을 출력하는 것이 더 효율적입니다. 아래는 scikit-learn 라이브러리를 활용해 이미지를 업로드하고, 해당 이미지에 포함된 픽셀 값을 데이터프레임으로 가져오는 예시입니다.

예제 코드

from skimage import io
import pandas as pd
path = "path to puppy.PNG"
img = io.imread(path)
print("Image being read")
io.imshow(img)
print("Image printed on console")
my_df = pd.DataFrame(img.flatten())
print("The image pixels dimensions are ")
print(my_df.shape)

실행 결과

Image being read
Image printed on console
The image pixels dimensions are
(886104, 1)

코드 설명

  • 필요한 라이브러리들(skimage, pandas)을 임포트합니다.

  • 이미지가 저장된 파일 경로를 정의합니다.

  • 'imread' 함수를 사용해 해당 경로에 접근하여 이미지를 읽어 들입니다.

  • 'imshow' 함수를 사용해 이미지를 콘솔 화면에 표시합니다.

  • 'flatten' 함수는 RGB 이미지의 3차원 구조를 1차원으로 변환하여 픽셀 값을 데이터프레임으로 가져옵니다.

  • 행이 너무 많은 데이터프레임 전체를 출력하는 대신, shape 속성으로 데이터프레임의 차원만 표시합니다.

  • 데이터프레임의 실제 내용은 print(my_df)를 통해 언제든지 확인할 수 있습니다.

  • 최종 출력 결과는 이미지의 픽셀 값들이 담긴 데이터프레임이며, 위 예제에서는 886104개의 픽셀 값이 1개의 열로 구성되어 있음을 확인할 수 있습니다.