관리 메뉴

ComputerVision Jack

[Matlab - 영상의 히스토그램 출력] 본문

Image Processing/Matlab ImageProcessing

[Matlab - 영상의 히스토그램 출력]

JackYoon 2020. 7. 15. 23:46
반응형

Matlab을 이용하여 영상의 히스토그램을 출력해보겠습니다. src 파일로는 영상처리의 대표적인 이미지 lena.tif 파일을 사용하겠습니다.

 

Matlab Histogram

히스토그램은 영상의 발기 값의 분포를 알기 위하여 사용하는 방법입니다.

우선 0~256 (그레이 스케일 값의 범위) 배열을 만든 후에, 영상의 각 픽셀 값에 접근하여 그 밝기 값에 해당하는 인덱스 값을 증가시키면 됩니다.

 

[matlab Histogram code] 

 

matlab Histogram code

우선 opencv와 마찬가지로 imread( ) 함수를 통하여 영상을 읽어옵니다.

# 주의할 점은 영상의 경로 설정입니다.

그 다음 이중 for문으로 영상의 각 픽셀에 접근하기 위해 size( ) 함수에 영상을 넣어 heightwidth의 값을 가져옵니다.

 

H = zeros([256, 1]) 통하여 그레이 스케일 값의 크기만큼 0 배열을 선언합니다.

이중 for문을 돌아 해당 픽셀 값의 밝기 값을 체크한 후 밝기 값에 해당하는 H 배열의 인덱스 값을 증가시킵니다.

 

matlab 작업 공간

코드를 실행 시키면 화면에 아무것도 나오지 않습니다.

옆에 보시면 작업 공간이 생기고 코드를 실행 후, 변수의 값이 저장되어 있습니다.

여기서 H의 경우 저희가 작업한 히스토그램의 값이 들어있는 배열입니다.

matlab 프롯

H변수를 클릭하고 상위 플롯 부분에 들어가시면 원하는 모양으로 그래프를 그려볼 수 있습니다.

H 배열에 해당하는 플롯

Histogram Binning

고해상도 이미지는 매우 큰 히스토그램을 생성 할 수 있습니다. 이러한 큰 히스토그램은 보기에 실용적이지 못합니다.

따라서 Binning 과정을 통해 다양한 강도 값을 히스토그램 열에 결합하여야 합니다.

 

[matlab Binning Histogram code]

 

히스토그램 binning 적용

Histogram을 만드는 코드에서 달라진 점은 H 배열이 0 ~ 256 값이 아닌 32까지로 범위가 줄어들었습니다.

double과 int8로의 형변환에 주의하여 코딩하셔야 합니다.

 

Histogram vs Binned Histogram

수치적으로 잘 감이 안온다면 그래프로 출력해보시면 확인 할 수 있습니다. 왼쪽은 lena의 일반 histogram 입니다. 왼쪽은 내가 원하는 값으로 bin값을 설정한 후, (밝기 값 * bin 값)을 256로 나누어 해당 비율 값을 확인 할 수 있습니다. 

반응형

'Image Processing > Matlab ImageProcessing' 카테고리의 다른 글

[Matlab - Gaussian Filter]  (0) 2020.07.24
[Matlab - MeanFilter function]  (0) 2020.07.21
[Matlab - AlphaBlending]  (0) 2020.07.21
[Matlab - Point Operation Threshold]  (0) 2020.07.16
[Matlab - Point Operation]  (0) 2020.07.16
Comments