영상처리: 특정 목적을 달성하기 위해 원래 영상을 개선된 새로운 영상으로 변환하는 작업

화질 개선 자체가 목적인 경우: 도주 차량의 번호판 식별, 병변 위치 찾기 등

컴퓨터 비전은 전처리로 활용하여 인식 성능을 향상

 

영상을 획득하고나면 디지털로 변환함 

MxN영상으로 샘플링

L단계로 양자화

 

디지털 영상의 좌표계에서는 왼쪽 위 구석이 원점임

 

컬러 모델

컬러모델은 특정상황에서 컬러의 특징을 설명하기 위한 방법

하나의 컬러 모델을 사용하여 컬러의 모든 성질을 설명하기엔 불가능

색좌표계들은 보통 세가지 요소를 사용하여 색을 표현하기때문에  각각의 요소를 하나의 축으로 하는 3차원 좌표 시스템에 대응

RGB컬러 모델
HSV컬러모델

HSV컬러모델은 RGB보다 빛 변환에 강건함.

 

RGB칼라 영상임

위 사진에서 A는 24비트의 칼라영상 B는 R만의 영상 C는 G만의 영상 D는 B만의 영상임

그럼 이 사진을 RGB채널별로 디스플레이하는것을 한번 해볼것임.

import cv2 as cv
import sys

img=cv.imread('soccer.jpg')

if img is None:
	sys.exit('파일을 찾을 수 없습니다.')
   
cv.imshow('original_RGB',img)
cv.imshow('Upper left half',img[0:img.shape[0]//2,0:img.shape[1]//2,:])
#이 코드 부분은 원본 이미지의 높이를 2로 나눈 값과 너비를 2로 나눈 값으로 이미지를 자르는 부분임
#즉 원본이미지의 상단 절반 왼쪽 부분만 표시됨.
#좀 더 자세히 설명을 하자면 img.shape는 img배열의 형태(높이,너비,체널)를 나타내는 속성인데
#여기서 img.shape[0]은 이미지의 높이, img.shape[1]은 이미지의 너비를 나타냄
#:라는것은 모든것을포함한다는 뜻으로 모든 체널을 포함한다는 얘기가됌
cv.imshow('Center half',img[img.shape[0]//4:3*img.shape[0]//4,img.shape[1]//4:3*img.shape[1]//4,:])
#아까 말했던것처럼 img.shape[0]은 이미지의 높이 img.shape[1]은 이미지의 너비를 나타냄 
#img.shape[0]//4는 이미지의 높이를 4로 나눈 값이고 3*img.shape[0]//4는 이미지 높이를 4로 나눈 값에
#3을 곱한값임 그러니가 이미지 높이의 1/4부터 3/4까지의 영역을 선택함 마찬가지로 이미지의 너비도 똑같이
#1/4영역부터 3/4영역을 선택하였고 맨 뒤에 :표시는 모든 체널을 포함한다는 것이니까 이것은 img의 배열중앙
#부분의 절반을 자르는 부분임 이 창에는 원본이미지의 중앙부분의 절반이 표시될것임
cv.imshow('R channel',img[;,;,2])
cv.imshow('G channel',img[;,;,1])
cv.imshow('B channel',img[;,;,0])
# 이 코드들은 아까 설명했던것과 같이 img[높이,너비,체널]인데 모든 높이와 너비를 선택하여서 원본이미지와
#크기는 똑같을 것이며 맨 뒤에 체널부분에서 RGB에 따른 체널선택에 차별성을 두어서 rgb체널별로 
#디스플레이를함
cv.waitKey()
cv.destroyAllwindows()

 

'computer_vision' 카테고리의 다른 글

히스토그램(histogram)  (0) 2023.04.16
픽셀기반 영상처리-산술연산  (0) 2023.04.16
colormap  (0) 2023.04.16
computervision  (0) 2023.04.15
OpenCv  (0) 2023.04.15

+ Recent posts