2011-02-02 7 views
0

저는 현재 작업중인 프로젝트의 홍수 채우기 알고리즘을 구현하고 있습니다. 나는 보통의 목적, 이미지 편집을 위해 그것을 사용하고있다. 나는 기본 알고리즘에 아무런 문제가 없지만, 나는 더 잘 보이는 것을 원한다.어떤 종류의 퍼지 범람 알고리즘이 있습니까?

대부분의 경우 내 이미지 영역은 대부분 한 가지 색상이지만 약간 가볍거나 어두운 픽셀로 경계가 지정된 영역을 갖습니다. 이 테두리 픽셀을 떠나지 않을 "퍼지"홍수 채우기 알고리즘을 알고 싶습니다.

  1. 맨하탄 거리 3 개 색 구성 요소에 대한 : 거리의
  2. 최대 적색, 녹색, 청색 나는 원래 픽셀의 두 개의 서로 다른, 간단한, 거리 측정 withn 모든 픽셀을 채우기 위해 노력했습니다 색 구성 요소 사이.

이들 중 어느 것도 경계선을 벗어나 때로는 인접한 영역을 시각적으로는 뚜렷하지만 "가까운"색으로 채우지 않습니다.

내 문제를 해결하기위한 마법의 총알이 없다고 생각하지만 더 나은 결과를 얻으려는 알고리즘을 알고 싶습니다. 또는 그러한 알고리즘을 찾기 위해 유용하게 사용할 수도 있습니다. . 그물을 돌면서 나는 "퍼지 홍수가 평균 이동 알고리즘을 채우는 것"이라고 불리는 것에 대한 언급을 발견했지만, 그것이 똑같은지는 확신 할 수 없다. 실제 거리를 사용

+0

비슷한 테두리의 픽셀이 채우기 색상으로 변경되지 않지만 기존 색상, 영역의 이전 색상 및 채우기 색상 간의 가중치 평균으로 변경되도록 알파 테두리를 만들려고하십니까? –

+0

테두리를 따라 앤티 앨리어싱을 수행하려는 것처럼 보입니다. RGB가 작업하기에 적합한 공간이 아니라고 생각합니다. 꽤 이상한 결과를 초래할 수 있습니다. 대신 HSV를 사용하는 방법을 살펴보십시오. –

+0

피터 테일러 (Peter Taylor) - 그 특별한 전략은 나에게 발생하지 않았지만, 시도해 볼 수 있습니다. 고맙습니다. 짐 Mischel - 나는 그것을 HSV로 번역 할 수 있었다. 그러나 나는 그 후 무엇을 할 것인지에 관해 명확히하지 않는다. 다행히도 인접한 영역의 채우기가 줄어들지 만 다양한 거리 메트릭을 사용하더라도 내가 가지고있는 과도한 알파 - d 경계를 제거하는 데 도움이 될지 확신 할 수 없습니다 (RGB 픽셀에서 RGB 픽셀로 이동하여 0x808080에서 0x000000까지, 채우기 후 추한 회색 테두리가 남음). 나는 그 큰 가치의 차이를 그냥 무시할 수 없을 것입니다.생각해 줘서 고마워. – Edward

답변

0

천연 같다 : D = SQRT (R^2 + G^2 + B^2)

이어서 (색 공간)에서 원래의 화소로부터 최대 거리를 지정하는 공차 파라미터를 정의하는 테스트 픽셀이 될 수 있습니다. 이 값보다 크면 해당 픽셀에서 바깥쪽으로 넘치지 마십시오.

원하는 효과가 나타날 때까지 0에서 Sqrt (255^2 + 255^2 + 255^2)의 공차를 조정하십시오.

0

원본 픽셀보다 로컬 픽셀의 품질을 사용해 볼 수도 있습니다. 이방성 확산 필터와 같은 효과를 낼 수 있습니다. 현재 픽셀 (채우기)과 인접 픽셀 사이의 그래디언트가 충분히 낮 으면 이웃을 엔큐합니다.

0

공차는 단일 숫자가 아닌 범위로 설정해야합니다. 20 %에서 50 %로 설정하면 색차가 20 % 일 때이 픽셀의 색을 완전히 바꿀 수 있습니다. 50 % 이상이면이 픽셀을 채우지 않습니다. 차이가 20 %에서 50 %까지의 범위에있는 경우 이전 색상과 새 색상을 (d-t_min)/(t_max-t_min) 비율로 혼합합니다. 여기서 d는 색상 차이이고 t_max는 사용자의 허용 범위입니다 (0 ... 1로 표시). 나는 그런 알고리즘을 결코 구현하지 못했다. 아마 방금 발명 했어.

관련 문제