2013-07-15 4 views
-1

데이터 테이블을 순환하면서 테이블에 데이터를 저장하는 것과 관련된 질문이 있습니다. 대신, 나는 테이블에 특정 데이터의 위치를 ​​저장하고 싶다.셀의 위치를 ​​저장하기 위해 테이블을 반복합니다.

지금 제가 작업하고있는 것은 검정색의 숫자 0과 흰색의 255로 정의되는 pgm 픽셀 값의 테이블입니다. 이 테이블을 가지고 무엇을하기를 바랄까요? 그리고 그 픽셀이 255를 나타내는 경우에만 그 픽셀의 위치, 즉 행과 열 번호를 배열에 저장합니다.

나는 ' 나는 현재 pgm 테이블을 가지고 있으므로이 예제를 예제로 제공 할 것이다. 간단하게 만들려면 15의 값을 표시하는 픽셀의 위치 만 기록하도록하십시오. 모든 답변이 크게 감사합니다 :)

P2 
# feep.pgm 
24 7 
15 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 
0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 
0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0

자바 스크립트로 모든 코드를 작성할 수 있습니까? – user2517142

답변

1

당신은 같은 것을 수행 할 수 있습니다 위의에서

var locs = [], 
    row, 
    col, 
    pixelData = ..., 
    nRows = ..., 
    nCols = ...; 
for (row = 0; row < nRows; ++row) { 
    for (col = 0; col < nCols; ++col) { 
     if (pixelData[row][col] == 15) { 
      locs.push([row, col]); 
     } 
    } 
} 
// now the locs array has all [row,col] locations of pixels with value 15 

pixelData 픽셀 값의 배열은 각각의 행의 배열 될 것이다 :

끝에
var pixelData = [ 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, . . .], 
    [0, 3, 3, 3, 3, 0, 0, 7, 7, . . .], 
    . . . 
]; 

, 당신은 그것으로 초기화 것처럼 locs이 두 요소의 배열의 배열 될 것으로 기대한다 :

var locs = [ 
    [1, 19], [1,20], [1,21], [1,22], [2, 19], [2,22], ... 
]; 
+0

감사합니다. 이것은 대단한 것 같습니다. 그러나 pixelData 변수의 경우 그 값을 무엇으로 선언하겠습니까? – user2517142

+0

@ user2517142 - 그냥 pgm 픽셀 데이터 여야합니다. 내가 게시 한 코드는 정수 값 배열의 배열이라고 가정합니다. 필자는 이미 pgm 데이터를 읽었으며 인덱스를 수집하고 있는지를 묻고 있다고 가정했습니다. 그렇지 않은 경우 어떤 형태의 데이터로 시작합니까? –

+0

우리는 원의 진정한 흑백 사진 인 pgm 파일을 사용하고 있습니다. 픽셀 값을 테이블로 가져올 수있게되면이 코드를 사용하여 그림 내의 픽셀의 "좌표"를 찾습니다. 그리고 마지막으로 이미지에서 원의 중심과 반경을 결정하기 위해 몇 가지 수학 방정식을 통해 좌표를 실행합니다. – user2517142