2017-12-30 8 views
0

이진 이미지의 세로 막대 그래프를 만들려고합니다. MATLAB의 기능을 사용하고 싶지 않습니다. 그것을하는 방법?MATLAB의 이진 이미지 히스토그램

나는이 코드를 시도했지만 그것이 올바른지 아닌지 모르겠어요 :

function H = histogram_binary(image) 
[m,n] = size(image); 
H = zeros(1,256); 
for i = 1:m 
    for j = 1:n 
     H(1,image(i,j)) = H(1,image(i,j))+1; 
    end 
end 

이미지는 다음과 같습니다

The picture

결과 :

vertical histogram

값을 볼 수없는 이유는 무엇입니까? 검정 픽셀의 히스토그램에?

+0

자바 스크립트로 자세한 구현 및 데모를 보려면 http://ciphervision.com/을 방문하십시오. – flamelite

답변

1
% Read the binary image... 
img = imread('66He7.png'); 

% Count total, white and black pixels... 
img_vec = img(:); 
total = numel(img_vec); 
white = sum(img_vec); 
black = total - white; 

% Plot the result in the form of an histogram... 
bar([black white]); 
set(gca(),'XTickLabel',{'Black' 'White'}); 
set(gca(),'YLim',[0 total]); 

출력 : 다음과 같이 그들이 0의 가치와 1에서 루프 시작이 있기 때문에

코드에 관한 것을 들어 BW Histogram

, 그것은 검은 색 픽셀을 계산하지 않습니다 ... 그것을 다시 :

function H = histogram_binary(img) 
    img_vec = img(:); 
    H = zeros(1,256); 

    for i = 0:255 
     H(i+1) = sum(img_vec == i); 
    end 
end 

그러나 명심 (바이너리 이미지에 해당 할 수있는 유일한 접점을 모든 바이트 발생을 계산 0 또는 1 값)은 무의미하며 히스토그램의 가독성을 떨어 뜨립니다. 보조 노트에서는 an existing function을 무시하므로 image을 변수 이름으로 사용하지 마십시오.

+0

Belluzo : 이진 이미지의 세로 막대 그래프를 원했기 때문에 히스토그램을 기반으로 그림에 몇 개의 문자가 있는지 다음에 계산할 수 있습니다. 방법이 있습니까? 고마워요. – dEs12ZER

+0

뭐라고 요? 글자 수?! 당신은이 접근 방식으로 그들을 셀 수 없다. ... –

+0

나는 진짜 이진 이미지를 볼 수있는 포스트를 편집했다. 그것은 11 개의 caracteres를 얻는다. 나는 바이너리 이미지의 수직 히스토그램을해야하는 프로젝트를 가지고있다. 그 그림에서 caracteres의 수를 세는 방법을 구현해야합니다, 당신은 어떤 해결책을 제안 할 수 있습니까? – dEs12ZER

0

위의 설명에서 @beaker에서 언급했듯이 이러한 경우의 수직 막대 그래프는 일반적으로 수직 투영을 나타냅니다.

I = imread('YcP1o.png'); % Read input image 
I1 = rgb2gray(I); % convert image to grayscale 
I2 = im2bw(I1); % convert grayscale to binary 
I3 = ~I2; % invert the binary image 
I4 = sum(I3,1); % project the inverted binary image vertically 
I5 = (I4>1); % ceil the vector 
plot([1:1:size(I,2)],I5); ylim([0 2]) 

당신은 더 0->1 전환을 확인할 수 있습니다이 경우 답변으로 13을 제공 sum(diff(I5)>0)를 사용하여 문자의 수를 계산하기 위해 다음은이 작업을 수행 할 수있는 방법이다.