DevKim

[영상처리] MATLAB 영역 단위 처리 - Filtering ,fspecial 함수,분리 가능 필터 본문

영상처리

[영상처리] MATLAB 영역 단위 처리 - Filtering ,fspecial 함수,분리 가능 필터

on_doing 2020. 10. 4. 13:06
728x90

filter2(filter, image, shape)

 

* filter2 함수의 출력은 double 형임!!!!!!!!!!!!!!!!!!

 

 

<shape>

- ‘same’ : 0으로 채움 (default 값)

 

- ‘valid’ : 에지 무시

 

- ‘full’ : 영상과 마스크가 하나라도 겹치면 필터링을 수행함.

이때, 영상의 화소 값이 없는 곳은 0으로 채움

 

- ‘mirroring’ : Matlab에서 지원되지 않음

(코드로 직접 구현)

 


필터함수 사용하지 않고 '직접 구현했을때'

1. 'same'

 

a=ones(3,3)/9

filter2(a,x,'same')

 

2. 'valid'

- filter2(a,x,'same')과 동일함

 

x2=zeros(7,7);
x2(2:6,2:6)=x #이 구간은 영상으로 채워라!

filter2(a,x2,'valid')

 

3. 'full'

- 하나라도 걸리면 계산을 하겠다!!

 

filter2(a,x,'full')

 

4. 'mirroring'

- 직접 구현해야함

 

 

m_x=[x(1,:);x;x(end,:)]; #이때 ;는 두 행렬을 앞의 행렬을 뒤의 행렬 위로 붙여줌!!!!! ,는 옆에 붙여줌
m_x=m_x(:,1),m_x,m_x(:,end)];

 


fspecial 함수 사용

h=fspecial(type,parameters)

 

ex) 평균필터 사용시

 

c=imread('camera.tif');
f1=fspecial('average');
cf1=filter2(f1,c);

figure,imshow(uint8(cf1)); # 출력이 double형임으로 uint8로 바꿔줌. 또는 /255로 나눠서 0~1 사이의 값으로 변경해줌 imshow(cf1/255);

 

 

그 외 다영한 크기의 평균 필터 사용시

 


분리 가능 필터

필터링의 연산량을 줄여줌

 

728x90
Comments