코딩 및 기타/이미지

이미지 양자화 ( image quantization )

정지홍 2025. 1. 8. 13:10

이미지 양자화 ( image quantization )

  • 연속적인 색상이나 grayscale값을 유한한 수의 값으로 변환하는 과정
  • 주로 이미지를 압축하거나 디지털화 할때 사용
    • 이미지가 표현할 수 있는 색상을 제한해서 파일의 크기를 줄이기 or 처리 속도 향상을 가져온다

 

사용한 이미지

  • 우선 위와 같이 opencv로 이미지를 읽어왓서 rgb로 변환 시켰다.
    • ( opencv는 이미지를 bgr로 읽는다)

  • 1. 우선 rgb로 이미지를 변환해서 shape을 확인했다
    • ( 각각 하나의 데이터는 [ R , G , B ]형식으로 데이터가 존재할거임. 이러한게 824x539개 존재)
      • 왜냐면 각 픽셀의 값을 나타내야 하니...
  • 2. 그리고 처리를 위해서 reshape( -1 , 3 )으로 평탄화를 시킴
  • 3. 평탄화 시킨 데이터의 shape을 확인

  • 기존의  [ R , G , B ]형식으로 된 데이터 쌍이 134581개가 존재하며, 총 픽셀은 444136개이다.
  • 우선 k-means clustering을 할것이니 종료조건을 튜플로 설정

  • 1. k-means 클러스터링을 사용하였으며, 총 5개의 클러스터로 rgb값을 분류하였다.
  • 2. compactness는 cluster내 데이터간 거리의 합이다.
  • 3. labels는 총 0~4이다.
  • 4. centers는 각 레이블에 대한 색상값이다. 나중에 출력할 이미지는 해당 5가지중 1가지로만 표한할 것이다.
  • 5. 그냥 쉐입 확인

  • 1. centers리스트에 labels를 넣어서, 결과를 만들거임. 
    • labels에 맞는 값을 centers애서 찾아서 colours에 저장하는 방식
  • 2. 출력
  • 3. 쉡입을 확인
  • 4. 평탄화
  • 5. 다시 쉡입 확인
  • 6. 위에서는 [ R , G , B ]형식으로 된 데이터 쌍이 134581개였다면, 양자화를 하고 난 뒤 5개로 줄었다.

기존 이미지의 shape과 맞게 reshape하고, 출력해봄

 

 


 

  • 위에 해당되는 이미지를 가져온다. 그리고 img를 sub_img들로 나눈다.
    • 20x20의 이미지가 총 5000개가 존재

  • 1. 튜플로 k-means clustering의 종료 조건 설정
  • 2. k-means clustering을 실행한다.
    • 20 x 20 이미지이니 각각 픽셀들과 중심들의 거리 차이를 구할것이다. 그러면 총 1장당 400 x 10의 계산을 할것이며, 시도 횟수는 10이니 총 40000이다.
  • 3. compactness는 각 클러스터내의 데이터간의 거리들의 합이다.
  • 4. cluster는 각 클러스터가 속한 번호이다.
  • 5.center는 각 클러스터의 평균값(중심점)이다.
  • 6. cluster의 shape확인
  • 7. centers의 shape확인

  • 1. k-means로 얻은 클러스터 중심들을 20x20 이미지로 변환
  • 2. 클러스터의 중심점들을 시각화하기 위해서 2x5의 서브플롯 생성 및 시각화

  • 1. 위에 출력된것을 보고, 각 클러스터에 해당되는 정답 레이블을 적어주자
  • 2. 우선 예측값을 저장할 list를 0으로 체우자. shape은 위에서도 알다싶이 labels_true의 shape은 (5000,1)이다.
  • 3. for문을 돌면서, 각 클러스터 번호에 i에 해당되는 예측된 라벨을 실제 라벨에 맞게 정렬
    • cluster.ravel로 우선 2D -> 1D로 바꾼다. 그리고 i와 같은 값을 가지면 해당되는 값을 True로 저장하고 아니면 False로 저장
    • labels_pred[ True ]인것들만 labels[i]에 해당되는 값을 넣어준다

  • 정확도 계산 및 시각화
    • 가로는 predicted, 세로는 expected이다.

'코딩 및 기타 > 이미지' 카테고리의 다른 글

가우시안 필터 Gaussian Filter  (0) 2025.01.09
sobel 연산자  (0) 2025.01.09
image binarization  (0) 2025.01.07
히스토그램 histogram ( 스트레칭 , 평탄화 )  (0) 2025.01.07
사진의 형식 , grayscale , opencv - 1  (0) 2025.01.07