영상처리
[영상처리] 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