CH2
학습목차
1. 히스토그램 & 이진 영상
2. 영상 변환의 세 가지 기본 연산
3. 다해상도 & 모폴로지 & 컬러
1. 히스토그램 & 이진 영상
1.1) 히스토그램
- 히스토그램
- [0,L−1] 사이의 명암값 각각이 영상에 몇 번 나타나는지 표시
- 히스토그램 h 와 "정규화" 히스토그램 h^

- 히스토그램 평활화
- 히스토그램을 평평하게 만들어줌, 누적 히스토그램 C(.) 사용

- 히스토그램 역투영과 얼굴 검출
- 조명 변화를 고려해 (HSI) 공간에서 처리, 입력은 H와 S채널 영상
- 모델 얼굴에서 구한 히스토그램 hm은 회소의 컬러 값을 신뢰도 값(0~1)으로 변환
- 실제로는 비율 히스토그램 hr 사용
- 출력 : L 단계를 q 단계로 양자화
- 결과 : 얼굴, 손 영역은 높은 신뢰도 값을 가진다.
- 장점 : 히스토그램은 물체의 이동과 회전에 불변하므로, 물체가 이동하고 회전해도 성능 유지
- 단점 : 비슷한 색 분포를 갖는 다른 물체를 구별하지 못함


1.2) 이진화와 오츄 알고리즘
- 이진화
- 명암영상을 스레시홀드 T 보다 작으면 0(흑) 크면 1(백)로 변환해주는 것


- 오츄알고리즘
- 이진화 했을 떄 "흑 그룹과 백 그룹이 각각 균일할수록 좋다" 는 원리에 근거
- 균일성은 분산으로 측정(분산이 작을수록 균일성이 높음)
- 분산의 가중치 합 vwithin(.) 을 목적 함수로 이용한 최적화 알고리즘
- 흑그룸 안에있는 분산값과 백그룹 안에 있는 분산값을 더했을때 최소가 되도록 최적화 알고리즘을 구성.

- 계산
- 흑그룹 정규화 히스토그램 W0
- 흑그룹 평균값 : 정해져있는 t 까지의 i 와 h^(i) 곱해서 평균값(μ0)을 구함
- 백그룹 정규화 히스토그램 W1
- 백그룹 평균값 : 정해져있는 t+1 부터 끝 까지의 i 와 h^(i) 곱해서 평균값(μ1)을 구함 - 각각 분산값 구해서 더하기
- t−i 번쨰의 결과를 t 번째에 활용하여 빠르게 계산 가능 (like 동적 프로그래밍)
- V(상수)=vwithin+vbetween
- 이전 슬라이드에서 구했던 vwithin 을 촤솟값으로 둔다는 것은 vbetween 가 최대값이 된다는 얘기
- 이런식으로 T=argmax vbetween 를 만족하는 최댓값 구하는 문제로 바뀜
- 그러면 앞에서 이야기했던 t−1 번쨰 계산 결과를 이용해서 t 번째 결과를 빠르게 활용할 수 있는 다이나믹 프로그래밍 형태로 변형되어 시간을 줄일 수 있다.

2. 영상 변환의 세 가지 기본 연산
2.1) 점 연산
- 점 연산
- 어떤 화소가 자신의 명암값만 보고 새로운 값을 결정하는 경우
- 점 연산 식으로 쓰면, 대부분은 k=1 (즉, 한 장의 영상을 변환)
- 선형 연산 : 밝게(a 더하기), 어둡게(a 뺴기), 반전 ((L−1)−f(j,i) ← 현재 화솟값)

- 비선형 연산 : 감마(γ) 보정
- γ 가 1 보다 작으면 밝아지고, 1 보다 크면 어두워진다. (γ=1 → 선형 변환, 원본영상)

- 예시) 디졸브 : 화면 전환 (k=2 인 경우, 즉 두장의 영상을 변환?)

2.2) 영역 연산
- 영역 연산
- 주어진 화소의 근처 이웃에 있는 몇개의 화소들을 보고 새로운 값을 결정 하는 경우
- 상관과 컨볼루션 : 원하는 곳의 위치를 동일하게 찾아낼 수 있다.(사실 이 둘을 구분하지 않고 컨볼루션 (CNN) 이라는 용어를 사용)
- 상관
- 원시적인 매칭 연산(물체를 윈도우 형태로 표현하고 물체를 검출)
- 아래 예에서는 최대값 29를 갖는 위치 6에서 물체가 검증됨
- 컨볼루션
- 윈도우를 뒤집은 후 상관 적용 2 4 3 을 3 4 2 로!

- 다양한 컨볼루션 필터
- 선형 연산 필터
- 박스와 가우시안 필터은 스무딩 효과 -> 잡음 처리/에지 문제
- 샤프닝은 명암 대비 강조 효과
- 수평 에지와 수직 에지는 에지 검출 효과 -> 미분 연산자

- 비선형 연산 필터
- 예) 메디안 필터 : 솔트페퍼 잡음 효과적, 가우시안에 비해 에지 보존 효과 뛰어남

2.3) 기하 연산
-
기하 연산
- 일정한 기하학적 규칙에 따라 다른 곳에 있는 값을 취할 수 있는 경우
-
동차좌표와 동차행렬
- 동차좌표 : x˙=(y,x,1) ex) (3,5)→(3,5,1)..
- 동차행렬 : H˙
-
동차행렬을 이용한 기하 변환
- 예를 들어, 어떤 점을 y방향으로 3, x방향으로 2만큼 이동시키는 동차 행렬 H˙는 다음과 같다. 식, (2,16) 은 동차 좌표 x˙ 와 동차행렬 H˙ 를 이용한 기하 변환이다.

- 예제

-
왜 동차 좌표를 사용하나?
- 복합 변환을 이용한 계산 효율을 위해
- 예) 이동 후 회전은 두 번의 행렬 곱셈, 하지만 복합 변환을 이용하면 한 번의 곱셈
- 임의의 점 (cy,cx) 를 중심으로 회전: T(−cy,−cx)R(θ)T(cy,cx)
- 어파인 affine 변환 : 변환 행렬의 마지막 열이 항상 [001]T


-
영상의 기하 변환
- 화소 좌표에 동차 행렬을 적용하여 기하 변환을 하여 실제 target 픽셀에 대응
- 전방 기하 변환 : 값을 받지 못하는 화소가 생기는 에일리어싱 현상 (시각적으로 불만족스러운 현상)
- 변환행렬을 H˙ 라고 할떄 변환행렬을 적용해서 소스와 타겟간의 관계를 구하는것
- 후방 기하 변환을 이용한 안티에일리어싱 (에일리어싱을 해결하려는 기법)
- 후방에 있는 픽셀을 각각 전방에 어떤 픽셀에 해당되는지 계산 (두개가 하나로 합쳐지면 평균을 내면 된다)
- 변환행렬이 주어졌다고 하더라도 그것의 역변환을 구해서 타겟에서 소스로 가는 계산하면 undefined 가 해결될 수 있다

-
영상 보간 interpolation 에 의한 안티 에일리어싱
- 실수 좌표를 반올림하여 정수 좌표로 변환하는 과정에서 에일리어싱 발생
- 주위 화소 값을 이용한 보간으로 안티 에일리어싱
- 타겟으로 부터 소스에 실수로 변환됨. (딱 어떤 위치가 아니고 실수로 계산됨) → 보간에 의해서 실제 정수값을 계산해 낼 수 있다.

-
실수 좌표를 정수 좌표로 변환하는 방법
- 1) 최근접 이웃 방법 : Nearest: 반올림 사용, 에일리어싱 발생
- 2) 6면체 기준 3차 양산형 보간법 : Cubic
- 3) 양(방향)선형 bilinear 보간법
- 1차원에서의 선형보간식
- 실수 계산이 됬을때, f(x) 와 f(x′) 거리가 α, f(x′) 와 f(x+1) 거리가 1−α
- 왼쪽에 더 가까우니까 왼쪽값을 더 많이 반영하고 오른쪽의 값은 적게 반영하는 선형보간식

- 2차원에서의 선형보간식
- 실수 계산으로 좌표가 2차원에서 빨간점의 위치에 찍혔다면, 관련된 위치가 4개
- 1차원, 2차원 이렇게 2가지를 계산

-
최근접 이웃, 양 선형 보간, 양 3차bicubic 보간(not 선형)의 비교
- 최근접 이웃으로 변환하면 영상이 조금 외곡되는 것을 볼 수 있지만
- 양선형 보간을 하면 훨씬 좋은 퀄리티의 변환 영상을 얻을 수 있다
- 양 3차 보간도 더 좋짐
- 화질은 좋아지지만 계산 시간은 늘어난다는 tradeoff 관계

3. 다해상도 & 모폴로지 & 컬러
3.1) 다해상도
- 다해상도
- 해상도를 줄이거나 늘리는 연산
- 멀티미디어, 물체 크기 변환에 강인한 인식등에 응용될 수 있다.
- 피라미드
- 샘플링 비율 0.5 로 다운 샘플링 반복 (주어진 영상에서 위로가면서 디테일한 영상, 아래로 가면서 큰 영상을 얻을 수 있다.)
- 파라미드 구축 연산을 식으로 쓰면,
- fk−1 에서 fk 를 구할떄, 위치한 화소에 따라서 어떤 화소는 fk 에 영향을 주고, 어떤 화소는 fk 에 영향을 주지 못하는 그런 "에일리어싱" 문제가 발생한다.
- 원하는 fk 레벨에서의 해상도가 적절하지 않은 문제가 있을 수 있다.
- 해결
- Burt & Adelson 방법 : 다운 샘플링 전에 스무딩 적용하기
- 새로 생성된 픽셀의 값을 계산할 때 인접한 픽셀들의 값을 이용해서 가중 평균을 계산
- 모든 화소가 50% 씩 (0.4 + 0.05 + 0.05 = 0.5 또는 0.25 + 0.25 = 0.5) 공헌

- 즉 수직으로 이런 필터를 적용하고, 수평으로 이런 필터를 적용하고, 2차원의 경우에는 그림에서 볼 수 있는것과 같이 v 의 가운데 0.4 곱하기 h 의 가운데 0.4 는 w 의 0.16이 된다. 이런식의 2차원 필터를 적용하면 스무딩 효과가 발생.

- 이런 스무딩 효과에 의해서 Upper level 로 갈때
- 예를 들면 원본 f0 의 사이즈가 1024 라고 할떄, 1/2 로 다운 샘플링할떄, f1 은 다음과 같이 영상이 구해지고 게속해서 f2, f3 ... 이런식으로 구할 때 큰 문제 없이 다운샘플링 된다.

3.2) 모폴로지
- 모폴로지
- 원래 생물학에서 생물의 모양 변화를 표현하는 기법
- 수학적 모폴로지 : 컴퓨터 비전에서 패턴(연결요소의 모양)을 원하는 형태로 변환하는 기법
- 이진 모폴로지
- 1차원 2차원 구조요소 (이진 영상이기 떄문에 다음과 같이 0과 1로 이루어져 있다).
- 팽창(합집합의 개념으로 객체를 크게 늘려주는 효과), 침식(교집합의 개념으로 주어진 패턴을 적게 만들어주는 효과가 있다), 열기(먼저 침식을 수행하고 팽창을 해서 약간의 스무딩 효과), 닫기 연산(먼저 팽창하고 침식을 해서 약간의 스무딩 효과를 얻을 수 있다)

- 원본 영상인 이진 영상이 입력으로 들어오고, 수평 방향의 구조 요소를 가지고 있다면
- 팽창 : 해당 구조요소(1 1 1)를 적용했을 때 원본 영상의 (0 1 1) 을 (1 1 1) 로, (1 1 0) 을 (1 1 1)로 바꿔줌 → 즉 원본 영상을 크게 만들어줌
- 침식 : (1 1 1) 이라는 구조 요소를 사용했을 때, 왼쪽 오른쪽이 모두다 1이 있는 부분만 가운데 1로 살아나도록 함(원래 있는 객체의 패턴이 작아지는 효과)
- 열기(돌출부 깎기 - 침식 후 팽창) : 돌출된 부분이 깎아져서 완화되는 효과
- 닫기(홈 메우기 - 팽창 후 침식) - 원래 영상에서 움푹 파여져있는 홈 부분이 메워지도록

- '명암' 모폴로지
- 이러한 연산은 gray 영상에서도 적용할 수 있는데, 0 1 2 이런식의 명암값으로 표현

- 원래 영상이 그레이 값으로 주어졌다면, 평평한 구조요소(0 0 0)를 적용한다치면
- 팽창 : 숫자가 큰 값들이 더 커지기 떄문에(명암에서 밝기가 밝아진다는 뜻)
- 침식 : 숫자가 적어지기 때문에 (명암에서 전체적으로 어두워진다)
- 열기 : 침식 후 팽창 (약간 침식하고 비슷한 gray 값 얻을 수 있다)
- 닫기 : 팽창 후 침식 (약간 팽창하고 비슷하게 흰색이 많이 등장)


3.3) 컬러
문제
공식


알고리즘 & 에제 


