Fig. 4.6(a)
• 주기 노이즈 impulse-like bursts often visible in the Fourier spectrum
• Notch filter!
– notch: V자형의 새긴 금, 벤 자리
주기적 노이즈 축소
버터워스 노치 필터 버터워스 노치 필터
• §5.2.3: 주기적 노이즈는 스펙트럼에서 임펄스 형태
노치 필터링!
• 차수 n의 버터워스 노치 필터의 전달 함수:
– D1(u, v) = [(u – M/2 – u0)2 + (v – N/2 – v0)2]1/2
n
v u D
v u D v D
u H
) ] , ( )
, [ (
1 ) 1
, (
2 1
2
0
– (u0, v0)와 (-u0, -v0) (대칭성): “노치”들의 위치 – D0 = (u02 + v02)
• 이 필터는 주파수 직각사각형의 중심에 관해 규정됨 사용 전에 함수 fftshift 에 의한 전처리를 거쳐야. (§4.2와 §4.3)
• 노치 필터링 M-함수 작성: (cf. §4.5 에서 사용된 법칙)
– 다중 정현 노이즈 패턴을 만들기 위해 다중 노치를 입력할 수 있도록 작성.(§5.2.3)
– H를 구하고 나면, dftfilt(§4.3.3)로 필터링 수행
4.5 열화 함수의 모델링 4.5 열화 함수의 모델링
Approaches
1.
열화된 영상을 생성했던 장치와 비슷한 장치가 가용할 경우:
장치의 설정을 다양하게 해서 실험 일반적으로
,
열화의 특성 결정 가능– But,
관련 영상화 장치의 가용성은 예외적2.
전형적 방법: PSFs
를 만들고 다양한 복원 알고리듬에 의한 결과들을 시험하는 실험3. PSF
를 수학적으로 모델링: Gonzalez
와Woods[2002]
참고4. PSF
에 관해 가용한 정보가 없을 경우, PSF
를 유추하기 위해 “blind deconvolution”
사용– §
5.10
• 이 절의 나머지의 초점 on:
1. 함수 fspecial( 열화 함수 생성(PSF))(§3.5 –
필터 생성))과 (~ 필터 생성)
2. 함수 imfilter( 열화된 영상 생성)(§3.4)와
(~ 필터링) 3. 다양한 노이즈 생성 함수들(§5.2)을
사용해서 劣化된 영상을 모델링하기 위한 다양한 기법들.
주요 열화 – 흐려짐(blur) 현상 주요 열화 – 흐려짐(blur) 현상
• 흐려짐 현상 1: 서로에 대해 정지해 있는 장면과 센서에 대해 발생.
– 공간 또는 주파수 도메인 저역통과 필터에 의해 모델링 가능.
• 흐려짐 현상 2: 센서와 장면 간의 균일한
선형 동작 으로 인해 발생.
i) 흐려짐 현상 2 모델링: fspecial 사용 PSF = fspecial(‘motion’, len, theta)
len 화소 만큼의 카메라의 선형 이동 효과를 근사화하는 PSF를 반환
– theta의 단위: 도
• 양의 수평 축을 기준, 반 시계 방향
• 디폴트 theta = 0
– len의 디폴트 값 = 9
수평 방향으로 9 화소 이동
열화된 영상 모델링
Photoshop
Filter > 흐림효과 > 동작…
ii) PSF로 열화된 영상 만들기: imfilter 사용
>> g = imfilter(f, PSF, ‘circular’);
– ‘circular’: 표 3.2
iii) “+” 적절한 노이즈 열화 영상 모델 완성:
>> g = g + noise;
– noise: §5.2에서 설명한 방법 중 하나를
사용해서 만든, g와 같은 크기의 랜덤 노이즈 영상
테스트 패턴 생성
• 다양한 방식에 대한 비교를 위해 같은 영상 또는 시험 패턴을 사용!
• Checkerboard 패턴: 주요 특징에 영향을
주지 않고 크기를 바꿀 수 있기 때문에 위
목적에 특히 유용.
(테스트 패턴 생성)
C = checkerboard(NP, M, N)
– NP: 정사각형의 한 변의 화소 수 – M: 행을 구성하는 정사각형 수;
– N: 열 … 수
• 만일 N 생략, 디폴트로 M 사용
• 만일 M과 N이 모두 생략, 한 변에 8 개 정사각형
– 만일 NP도 생략, 디폴트 10 화소 – C = checkerboard
80 x 80
• 좌측 반의 밝은 정사각형들은 백색; 우측 반의 밝은 정사각형은 회색.
• 모든 밝은 정사각형들을 백색으로 만들려면,
>> K = im2double(checkerboard(NP, M, N) > 0.5);
– checkerboard로 만드는 영상은 값이 [0, 1]인 클래스 double 형
• [여백] 연산자
>
를 사용하면logical
결과;
im2double은 함수 checkerboard의 출력 포맷과 일치하는 클래스 double 형의 영상을 만듦
.
checkerboard(NP, M, N) (~ double 영상)
… > 0.5
논리 배열
im2double(·)
double 영상
• 복원 알고리듬의 계산 시간을 줄이고, 따라서 대화성을 개선하려면 작은
영상으로 실험 !
• 이 경우, 단지 표시 목적 을 위해, 작은
영상을 화소 복제에 의해 주밍할 수 있다면 유용: (cf. 그림 5.7 )
B = pixeldup(A, m, n) % 부록 C
– A의 모든 화소를 수직 방향으로 m 번, 수평
방향으로 n 번 복제.
– n을 생략하면, 디폴트는 m
tip - pixeldup
1. 시험 패턴 만들기: 그림 4.7(a)
>> f = checkerboard(8); % 64 x 64 2. 열화된 영상 만들기: 그림 4.7(b) i) PSF = fspecial('motion', 7, 45) PSF =
0 0 0 0 0 0.0145 0 0 0 0 0 0.0376 0.1283 0.0145 0 0 0 0.0376 0.1283 0.0376 0 0 0 0.0376 0.1283 0.0376 0 0 0 0.0376 0.1283 0.0376 0 0 0 0.0145 0.1283 0.0376 0 0 0 0
0 0.0145 0 0 0 0 0
>> f = checkerboard(8);
>>
imwrite(‘Fig0507(a)(ch eckerboard8).tif');
• Filter > Blur > Motion Blur…
motion blurring
3. (부가) 노이즈 패턴 만들기: 그림 4.7(c)
>> noise = imnoise(zeros(size(f)), ‘gaussian’, 0, 0.001);
4. 열화 영상 모델 완성: 그림 4.7(d)(흐려지고, 노이즈 낀 영상)
>> g = gb + noise ;
– 이 노이즈는 최대값이 0.15 정도인 반면 영상의 최대 값이 1 이므로, 눈에 잘 띄지 않음.
– 그러나, g 복원 때 간과할 수 없음.(§4.7 & §4.8)
• Steps 3 & 4: >> imnoise(gb, ‘gaussian’, 0, 0.001)
• 끝으로, 그림 4.7의 모든 영상은 수평 및
수직으로 8배( 512 512)씩 주밍 되었음:
>> imshow(pixeldup(f, 8), [ ])
– pixeldup(f, 8)
B = f([11111111 ... 64 64 64 64 64 64 64 64], [11111111 ... 64 64 64 64 64 64 64 64])