2015-01-15 13 views
0

레이블 맵의 픽셀 값을 변경하는 방법을 알고 싶습니다.XTK에서 픽셀 값을 변경하는 방법

이것이 나의 초기 접근 방식입니다. 불행히도 변경 사항은 캔버스에 반영되지 않습니다.

X.volume.prototype.SetPixelLabelMap = function(i, j, k, value){ 
 
    this._labelmap._IJKVolume[k][j][i] = value; 
 

 
    var color = this._labelmap._colortable._map.get(value); 
 

 
    var changeRawData = function(rawdata, pos){ 
 
    for(var n = 0; n < 4; n++){ 
 
     rawdata[pos + n] = color[n + 1]; 
 
    } 
 
    } 
 

 
    var dim = this._dimensions; 
 
    //in Z axis height is j width is i, the fast moving direction is the height 
 
    if(this._labelmap._children[2]._children[k]){ 
 
    changeRawData(this._labelmap._children[2]._children[k]._texture._rawData, (dim[0]*i + j)*4); 
 
    } 
 

 
    //in Y axis height is k width is i 
 
    if(this._labelmap._children[1]._children[j]){ 
 
    changeRawData(this._labelmap._children[1]._children[j]._texture._rawData, (dim[0]*i + k)*4); 
 
    } 
 
    
 
    if(this._labelmap._children[0]._children[i]){ 
 
    //in X axis height is j width is k 
 
    changeRawData(this._labelmap._children[0]._children[i]._texture._rawData, (dim[2]*k + j)*4); 
 
    } 
 

 
}

+0

이 포스트는 다음 [자식 문제] 관련이있다 (https://github.com/xtk/X/issues/166 # issuecomment-69914251) 'volume.sliceInfoChanged (0);'가 작동하지 않습니다. – juan

+0

설정을 할 수 있습니까? 문제를 설명하는 데모가 포함 된 jsfiddle 또는 codepen? – Nicolas

답변

0

당신은 사용하여 변경할 수 있습니다

dims = volume.labelmap.dimensions; 
zm = dims[0]; 
ym = dims[1]; 
xm = dims[2]; 
    for (var x = 0; x < xm; x++) 
    for (var y = 0; y < ym; y++) 
     for (var z = 0; z < zm; z++) 
     volume.labelmap.$[x][y][z] = 5; // some number 
//volume.labelmap.modified(); 
volume.sliceInfoChanged(0); 
volume.sliceInfoChanged(1); 
volume.sliceInfoChanged(2); 

JSFiddle

+0

나는 이것을 전에 시도했다. 일부 픽셀 만 변경하고 싶습니다.이 jsfiddle는 원시 데이터 조각을 나중에 처리하기 때문에 작동합니다. 일부 픽셀 만 편집하려면 "브러쉬"도구를 만들려고합니다. – juan