2012-02-13 3 views
1

방금 ​​샘플 이미지를 스캔했는데 이진 이미지에 "0"값이있는 첫 번째 픽셀을 감지하려고합니다. 페인트를 사용하여 텍스트를 쓰고 다음 프로그램을 사용할 때 항상 가장 아래쪽 픽셀을 잡습니다.이미지의 첫 번째 픽셀

clear all; 
    x=imread('textjay.png'); 
    y=im2bw(x); 

    height=size(y,1); % row 
    width=size(y,2); % col 

    valueoftheindex=0; 

    pixel_value=0; 

    for i=1:width 
    for j=1:height 
     pixel_value=y(j,i); 
     if (pixel_value==0) 
     valueofthewidth=i; 
     valueofthehieght=j; 
     break 
     end 
     end 
    end 

    valueofthewidth 
    valueofthehieght 

    imtool(y) 

답변

3

이것은 "첫 번째 픽셀"로 간주되는 것에 많이 달려 있습니다. 당신은 MATLAB을 사용하면 입력 행렬 (이미지) 트랜스, 또는 좀 더 정제에 의존하는 중 "firstness"당신이 가진 것의 기타 조치에 대한

idx = find(y == 0, 1, 'first') 
[row_idx, col_idx] = ind2sub(size(y), idx) 

를 사용할 수 할당 한 픽셀 순서 살 수 있다고 가정 계산 방법.

예, break은 dawe가 이미 지적했듯이 내부 루프 만 손상시킵니다.

+0

+1 왜냐하면 당신은 해결책 작품입니다. :) 선형 인덱스를 사용하는 것이 좋습니다. 나는'[row, col] = find (X, ...)'행동에 혼란 스러웠다. 나는 단지 내 잘못 대답을 제거했다. – dawe