Notice
Recent Posts
Recent Comments
Link
DevKim
[영상처리] MATLAB 히스토그램(Histogram) : imhist, imadjust, gamma, piecewise linear 본문
영상처리
[영상처리] MATLAB 히스토그램(Histogram) : imhist, imadjust, gamma, piecewise linear
on_doing 2020. 9. 27. 17:01728x90
히스토그램(Histogram)
- 각 밝기 값이 영상에서 존재하는 개수를 나타내는 그래프
Q) 히스토그램으로 어떤 정보를 얻을 수 있을까?
1. 화소들의 밝기 값이 낮은 영역에 많이 속하면 어두운 영상임을 알 수 있음
2. 화소들의 밝기 값이 높은 영역에 많이 속하면 밝은 영상임을 알 수 있음
3. 화소의 밝기 값이 넓은 범위에 걸쳐 분포하면 대비(contrast)가 좋은 영상(=선명함)
1. 히스토그램 구하기
imhist
p=imread('pot.tif');
figure,imshow(p);
figure,imhist(p),axis tight #axis tight를 사용하면 히스토그램 바가 꼭 맞게 디스플레이됨
→ 밝기 값들이 넓게 분포해있지 않고 가운데에 몰려있음 → 대비가 좋지 않음
2. 히스토그램 스트레칭(대비 확장)
<1> imadjust(영상,[a b],[c,d])
: 히스토 그램을 옆으로 펴주어서 밝기 값이 넓게 분포하도록 변환하는 기법
im : 원본 영상
[a b] : 원본 영상의 범위
[c d] : 변환된 영상의 범위
* [a b] , [c d] 는 [0 1] 범위 내에 있어야 함
* im을 double 타입으로 자동 변환하여 처리함
p=imread('pout.tif');
ph=imadjust(p,[70/255 270/255],[0 1]); #범위를 0과1 사이로 나타내기 위해 255로 나눠줌
figure,imshow([p ph]);
figure,imhist([),axis tight;
figure,imhist(ph),axis tight;
<2> gamma
imadjust(영상,[a b],[c,d],gamma)
- 직선이 아닌 둥글게 스트레칭해줌
t=imread('tire.tif');
th=imadjust(t,[],[],0.5); #[]는 [0,1]과 동일함
figure,imshow([t th]);
figure,imhist(t),axis tight;
figure,imhist(th),axis tight;
→ 밝기 값이 어두운 곳은 늘어남, 밝은 곳은 범위가 줄어듦
<3> 부분적 선형(piecewise linear)
pix=find(im >=a(i) & im <a(i+1));
out(pix)=(im(pix)-a(i))*(b(i+1)-b(i))/(a(i+1)-a(i))+b(i)
<부분적 선형 함수 생성>
t=imread('tire.tif');
th=histpwl(t,[0 0.25 0.5 0.75 1.0],[0 0.75 0.25 0.5 1.0]);
imshow([t th]);
figure,plot(t(:),th(:),'.'); #(:)는 행렬을 일렬로 늘어트려줌
728x90
'영상처리' 카테고리의 다른 글
[영상처리] 영역 단위 처리 -공간 필터링,공간 회선,평균 필터,선형 필터 이론 (0) | 2020.10.04 |
---|---|
[영상처리] MATLAB 히스토그램 평활화(equalization) & 룩업(Lookup) 테이블 (0) | 2020.10.04 |
[영상처리] MATLAB 영상처리 연산 (0) | 2020.09.27 |
[영상처리] MATLAB 공간 해상도 & 양자화 & 디더링(Dithering) (0) | 2020.09.20 |
[영상처리] MATLAB imshow 함수와 영상의 데이터 타입 (0) | 2020.09.20 |
Comments