Notice
Recent Posts
Recent Comments
Link
DevKim
[영상처리] MATLAB 비선형 필터 & ROI 처리 본문
728x90
0. 비선형 필터
: 마스크 내의 밝기 값에 비선형 함수를 적용
<-> 선형 필터 : 필터와 원본 영상을 곱해서 더함
1. Rank-order filter
: 마스크 내의 값들을 정렬하고 특정한 값을 출력하는 필터!!
-> 만약 값들이 오름차순으로 정렬되어있으면
최소값 필터는 펏 번째 값을 출력하는 rank-order 필터이고,
최대값은 마지막 값을 출력하는 rank-order 필터이다.
*nfilter :미리 정의된 함수를 사용하여 필터링. 원하는 함수 만들어서 사용할 수 있음
(lambda 같은건가..???)
<case 1>
1) 마스크 내의 가장 큰 값 출력 (최대 값 필터)
-> 영상을 밝게 함
cmax=nlfilter(c,[3,3],'max(x(:))');
2) 마스크 내의 가장 작은 값 출력 (최소 값 필터)
-> 영상을 어둡게 함
cmin=nlfilter(c,[3,3],'min(x(:))');
<case 2>
ordfilt2 함수
-> 함수 사용이 용이함
c=imread('cameraman.tif');
cmax=ordfilt2(c, 9, ones(3,3));
# 입력영상, 몇번째 픽셀을 선택할 것인지,
# 3X3 필터를 사용할거야= 3X3 영역에서 오름차순으로 정렬해서 그중에 9번째 값을 선택할거야
cmin=ordfilt2(c, 1, ones(3,3)); #최소값 필터
cmed=ordfilt2(c, 5, ones(3,3)); #median filter -> 잡음 제거에 많이 사용됨
imshow([c cmax cmin cmed]);
* 단점이 있다면 , rank-order 필터는 매우 느림
(정렬 연산 때문)
꼭 필요한 경우가 아니라면 선형필터를 사용하는 것이 좋음 !
2. ROI (Region of Interesting) 처리
* 영상 전체가 아닌 영상의 일부분만을 처리하기 원하는 경우에 사용
1. 원하는 부분 선택하기
roipoly
ig=imread('iguana.tif');
roi=roipoly(ig,[406 600 600 406],[58 58 231 231]); # x좌표,y좌표
figure,imshow(roi);
<영상에서 직접 ROI 설정 가능>
roi=roipoly(ig);
figure,imshow(roi);
2. 원하는 부분에 필터 적용하기
roipoly , roifilt2
= roi 부분만 필터링 해주는 함수
ig=imread('iguana.tif');
roi=roipoly(ig,[406 600 600 406],[58 58 231 231]);
a=fspecial('average',[15,15]);
iga=roifilt2(a,ig,roi); #roi 부분만 필터링 해주는 함수
u=fspecial('unsharp');
igu=roifilt2(u,ig,roi);
l=fspecial('log');
igl=roifilt2(l,ig,roi);
imshow([iga igu igl]);
728x90
'영상처리' 카테고리의 다른 글
[영상처리] MATLAB 기하학적 변환 - 데이터 & 영상의 보간(Interpolation) (0) | 2020.10.09 |
---|---|
[영상처리] MATLAB 가우시안(Gaussian) 필터 & 에지 샤프닝(sharpening) (0) | 2020.10.07 |
[영상처리] MATLAB 주파수 : 저역통과 및 고역통과 필터 (0) | 2020.10.07 |
[영상처리] MATLAB 영역 단위 처리 - Filtering ,fspecial 함수,분리 가능 필터 (0) | 2020.10.04 |
[영상처리] 영역 단위 처리 -공간 필터링,공간 회선,평균 필터,선형 필터 이론 (0) | 2020.10.04 |
Comments