함수 > 이미지 처리 > 이미지 조작 > 예제: 1D 및 2D 히스토그램
예제: 1D 및 2D 히스토그램
imhist, imhist2hist2d 함수를 사용하여 1D 또는 2D 히스토그램을 생성할 수 있습니다.
이 예제를 사용하는 것에 대한 자세한 내용은 이미지 처리 예제 정보를 참조하십시오.
imhist
이 함수는 광도 범위를 n 빈으로 분할하여 행렬 M의 요소에 대한 히스토그램을 생성합니다. 각 빈에는 해당 광도 레벨 범위에 속하는 픽셀 수가 들어 있습니다. 예를 들어, n = 256이면 8비트 그레이스케일 이미지의 모든 가능한 광도 레벨 각각에 대해 빈 하나가 사용됩니다. 256개 보다 적은 빈이 있는 경우에는 다음과 같은 방식으로 광도 레벨이 빈으로 분할됩니다.
이 식을 복사하려면 클릭
빈 레이블은 0부터 시작합니다. 256개 이상의 빈이 있는 경우 빈 크기가 1보다 작습니다.
1. 값과 히스토그램 모양 간의 관계를 확인하기 위해 작은 행렬 하나를 정의합니다.
이 식을 복사하려면 클릭
2. 위 행렬에 imhist 함수를 적용할 빈 수를 정의합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
n = 255이므로 256개 광도 레벨 각각이 고유한 빈을 갖게 됩니다. 행렬 P에서 볼 수 있는 것처럼 한 번 이상 나오는 빈은 150뿐입니다.
이 식을 복사하려면 클릭
3. 광도 레벨의 히스토그램을 도표화합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
4. n을 더 작은 값(예: 5)으로 설정하고 차이점을 확인합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
n = 5이므로 256개 광도 레벨을 5개의 개별 빈으로 분할해야 합니다. 0에서 256/5 사이의 광도 값은 빈 0에, 256/5에서 512/5 사이의 값은 빈 1에 포함되는 식으로 빈이 분할됩니다.
이 식을 복사하려면 클릭
행렬 P와 위 히스토그램에서 볼 수 있는 것처럼 광도 값은 다음과 같이 분산됩니다.
0, 30, 40은 빈 0(0-51)에 포함됩니다.
빈 1(52-103)에는 광도 값이 없습니다.
120 및 3개의 150은 빈 2(103-154)에 포함됩니다.
200은 빈 3(154-205)에 포함됩니다.
240은 빈 4(205-256)에 포함됩니다.
5. READ_IMAGE 함수를 사용하여 공백이 포함된 이미지를 읽을 수 있습니다.
이 식을 복사하려면 클릭
(pattern.bmp)
6. imhist 함수를 이미지에 적용합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이미지의 흰 공백(광도 값=255)은 오른쪽에 큰 돌출부로 나타납니다. 검정 및 기타 구분 가능한 회색조를 다른 빈에서 확인할 수 있습니다.
7. 빈 0(검정)과 빈 255(흰색)의 항목 수를 계산합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이미지의 여러 회색 음영 영역은 X축을 따라 작은 돌출부로 나타납니다.
imhist2
이 함수는 0에서 255 사이의 범위를 벗어나는 값을 가진 빈 데이터에 사용할 수 있습니다.
1. 0에서 255 사이의 범위를 벗어나는 요소를 포함하는 행렬을 정의합니다.
이 식을 복사하려면 클릭
2. 빈 수를 정의하고 n 빈 히스토그램을 계산합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
3. n 빈의 끝점을 계산합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
hist2d
이 함수는 각 차원에 n 빈을 생성하여 두 이미지 MN의 2D 히스토그램을 생성합니다. MN의 크기는 같아야 합니다. 두 이미지의 명암이 유사한 부분에서 픽셀 수가 유사하다면 hist2d의 출력 행렬은 강한 대각선 행렬을 형성합니다. 이 함수는 0–255 범위를 n 빈으로 분할합니다.
1. 빈 수를 정의하고 같은 크기의 이미지 행렬 두 개를 정의합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
2. 위에서 정의한 bin_label 함수에 벡터화 연산자를 사용하여 PQ의 빈 수를 계산합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
2D 히스토그램은 빈 번호 cPbins의 요소가 있고 Qbins에서 대응하는 요소의 개수가 r일 경우 열 c 및 행 r의 개수로 이루어진 n x n 행렬입니다. 예를 들어, PbinsQbins의 첫 번째 요소는 0 및 2이므로 히스토그램 행렬의 열 0, 행 2에서 개수 1을 생성합니다.
3. 먼저 0으로 구성된 행렬을 생성하고 개수를 추가하여 히스토그램 행렬을 계산합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
4. 위 출력을 hist2d의 출력과 비교합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
5. 보다 구체적인 예가 다음 컬러 이미지입니다.
READRGB 함수를 사용하여 이미지를 읽고 WRITERGB 함수를 사용하여 이미지를 파일에 기록합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
(smallwar.bmp)
6. extract 함수를 사용하여 녹색 및 파랑 컴포넌트를 따로 추출하고 두 색상 컴포넌트를 비교할 수 있습니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
7. 2D 히스토그램을 표시합니다.
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
이 식을 복사하려면 클릭
(hist2d.bmp)
8. 2D 히스토그램을 로그 눈금 위에 광도 이미지로 표시합니다.
이 식을 복사하려면 클릭
이미지를 검토하고 광도의 차이를 관찰합니다. 이 2D 히스토그램은 강한 대각선 행렬입니다. 즉, 해당하는 위치에서 대부분의 픽셀이 유사한 광도를 가집니다. 이것은 동일한 사진의 두 색상 컴포넌트이므로 이상한 일이 아닙니다. 텍스쳐가 매우 다른 두 이미지에서는 대각선이 이렇게 분명하지 않습니다.
도움이 되셨나요?