2011-08-18 5 views
3

비트 맵에서 주변의 색상과 색상을 대체하려고합니다. "<"& ">"플러스 "< ="및 "> = mask 매개 변수는 BitmapData 클래스의 임계 값 메서드에서 무엇을합니까?

threshold()

가 작동하는 것 같다 그러나 당신이 정확한 색상 이전 또는 이후에 정확한 색상"== "또는 모든 색상을 지정해야 할 것 같다 ". 마스크 매개 변수를 사용하여 교체 할 색상과 색상의 동적 범위를 찾는 방법을 찾는데 도움이되기를 바랍니다. 의도 된 용도는 무엇입니까? 예 1 및 2 아래의 코멘트 당

:

bit.threshold(bit, bit.rect, point, ">", 0xff000000, 0xffff0000, 0x00FF0000); 

bit.threshold(bit, bit.rect, point, ">", 0xff000000, 0xffff0000, 0x00EE0000); 

답변

1

당신이 홍수 채우기를 수행하려는 경우, 나는 마스크 매개 변수가 당신을 도울 것입니다 생각하지 않습니다. 마스크 매개 변수를 사용하면 테스트에서 색상의 일부를 무시할 수 있습니다. 귀하의 경우, 당신은 컬러의 모든 채널을 고려하고자합니다, 당신은 단지 일치하는 퍼지 싶어.

빨간색 컴포넌트가 0 인 모든 픽셀을 대체하려면 mask를 0x00FF0000으로 설정하면 다른 채널은 무시됩니다.

구현 의사 코드는 아마이 같은 같습니다 마스크, 0x00000000의 및 0x00FF0000 사이에 값을 제한하기 때문에 아무것도를 생성합니다 귀하의 샘플의 어느

input = readPixel() 
value = input & mask 
if(value operation threshold) 
{ 
    writePixel(color) 
} 

을 다음 테스트 그들은보다 큰 있다면 0xFF000000.

+0

더 설명 할 수 있습니까? 마스크를 100 % 0x00FF0000 (적색 채널)로 설정하면 빨간색의 양이없는 픽셀이 무시된다는 말입니까? 마스크를 0x00EE0000으로 설정하면 어떻게 될까요? 메인 포스트의 예를 약간 게시 할 예정입니다. –

+0

아니요, 0x00FF0000은 빨간색을 제외한 모든 항목을 무시합니다. 0xEE = 1110 1110이므로 빨간색과 일부 블록의 모든 그늘을 무시합니다 ... 실제로 이미지에는 의미가 없습니다. 전체 채널을 필터링하는 것이 목적이라고 생각합니다. –

+0

나는 내 운이 좋다고 느낀다. 그러나 나는 아직도 그것을 실천하려고 고심하고있다. 다음 각 항목의 내용을 설명해 주시겠습니까? (질문에 예제를 추가했다) –

1

나는 또한이 작업을 수행했으며 결국에는 내 자신의 임계 값 방법을 만드는 것이 가장 좋습니다. 아래에서 찾을 수 있습니다. 모든 것은 주석에 설명되어 있습니다.

//_snapshot is a bitmapData-object 
for(var i:int = 0; i <= _snapshot.width; i++) 
{ 
    for(var j:int = 0; j <= _snapshot.height; j++) 
    { 
     //We get the color of the current pixel. 
     var _color:uint = _snapshot.getPixel(i, j);      

     //If the color of the selected pixel is between certain values set by the user, 
     //set the filtered pixel data to green. 
     //Threshold is a number (can be quite high, up to 50000) to look for adjacent colors in the colorspace. 
     //_colorToCompare is the color you want to look for. 
     if((_colorToCompare - (100 * _threshold)) <= _color && _color <= (_colorToCompare + (100 * _threshold))) 
     { 
      //This sets the pixel value. 
      _snapshot.setPixel(i, j, 0x00ff00); 
     } 
     else 
     { 
      //If the pixel color is not within the desired range, set it's value to black. 
      _snapshot.setPixel(i, j, 0x000000); 
     } 
    } 
} 
+0

감사 Michiel (주석이 충분하지 않음) –

+0

Adden : 이것은 내가 원하는 것을 얻을 수 있지만 매개 변수가하는 것을 이해하고 싶습니다. –

+0

미안, 나는 주말 동안 외 쳤다. 그래서 나는 대답 할 수 없었다;) 나는 매개 변수에 관한 당신의 질문이 이미 Sean에 의해 대답되었다는 것을 안다. :) –