2013-01-22 5 views
0

작은 설명 :
캡처 코어 프레임 워크를 사용하여 내 스캐너에서 이미지를 얻었습니다. 배경색은 회색입니다. 그래서 나는 흰 바탕으로하고 싶다.

이 색상을 제거하는 가장 좋은 방법을 찾고 있습니다. Image Core Filters를 살펴 보았습니다. 그리고 내가 이해 한대로 나는 그 것들을 사용해야하지만, 나는이 작업을 포함/준비 filterfor 찾을 수 없습니다. 그래서, 직접 작성해야합니까?
색깔을 지우는 것을 의미합니다. 내 자신의 필터를 써서 내 이미지에 적용해야합니까? 권리? 고맙습니다.코코아에서 이미지의 배경색을 변경하는 가장 좋은 방법

UPD : 나는 맥 OS

+1

SDK가 지원되는 방법이 있는지 모르겠습니다. iOS의 Core Image 프레임 워크에 대해 읽었습니까? 네이티브가 없다면, 그리고 스스로 결정하기로 결정했다면 [이]에 대한 내 대답 (http://stackoverflow.com/questions/7171679/want-to-change-a-particular-color-inside -an-image-with-another-color-iphone/7172066 # 7172066) 스레드가 도움이 될 수 있습니다. – Krishnabhadra

+0

당신의 답을위한 탁구. 나는 찾을 수 없었다, 나는 mac os sdk에서 네이티브가 아무것도 없다고 생각한다 ... 그러나 당신이 이해할 때 당신의 예에서는 색을 다른 것으로 바꾼다. 하지만 제 경우에는 영역을 분석해야합니다. 삭제하고자하는 부분을 스캔 한 시트에 놓을 수 있습니다. –

+0

나는 그것이 내 대답이 도움이 될 것이라고 말한 이유에 동의한다. 내 대답 대신 당신의 질문에 답할 것이다. 패턴 매칭이나 색을 바꿀 영역을 찾기 위해 뭔가를해야 할 것입니다. – Krishnabhadra

답변

1

왜 이미지가 단순히 change the brightness일까요? 이 회색 배경색 값이 고정되어 있으면 만족할 때까지 전처리 단계로 약간 밝기를 늘릴 수 있습니다.

+0

예. 나는 그것에 대해 생각했다. 고맙습니다. 나는 시도 할 것이다. –

1

필터에 대한 개발은 여기에 작업에 매우 적합한 도구가 아닙니다. 필터는 픽셀 단위의 색상 이동 알고리즘을 이미지의 모든 픽셀에 적용합니다.

흰색으로 바꾸려는 픽셀에 대해 완전히 고유 한 것이 있으면 적절할 것입니다. 예를 들어, 제거하려는 배경이 이미지의 다른 부분에서 발생하지 않는 매우 좁은 색상 범위에있는 경우입니다. 이는 그린 스크린/블루 스크린 촬영에서 사용되는 기술로, 보존하려는 이미지 영역의 어느 곳에서도 녹색 또는 파란색 색상이 나타나지 않는 경우에만 작동합니다.

하지만 의견에서 말한 것처럼, 제거하려는 회색 수준이 배경에만 적용되지는 않으므로이를 적용 할 수있는 필터를 사용해도됩니다. 스캔 한 피사체의 픽셀에 영향을줍니다.

정말로 필요한 것은 관심 영역을 선택하고 그 영역에만 필터를 적용하는 방법입니다. 이 경우 openCV을 사용할 수 있습니다. 사실 그것은 한 번에 당신의 결과를 얻을 수있는 기능을 가지고있다 :이 기능은 배경의 일부가 될 것입니다 보장 할 수있는 픽셀 수해야 seedPoint에서 시작

http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=floodfill#int

floodFill(InputOutputArray image, //image to process 
      Point seedPoint,  //starting pixel 
      Scalar newVal,   //New value of the repainted domain pixels 
      Rect* rect,    //optional output param (you won't need it) 
      Scalar loDiff,   //max lower brightness/colour diff to select 
      Scalar upDiff,   //max upper brightness/colour diff to select 
      int flags)    //you want FLOODFILL_FIXED_RANGE 

회색으로 제거하고 싶습니다. (0,0)이 도움이 될 수 있습니다. 그런 다음 ROI 배열에있는 픽셀을 포함하여 인접 픽셀을 충분히 비교합니다. 결과 배열은 연결된 영역입니다. 배경 회색이 loDiff와 upDiff 사이에서 균일하게 떨어지는 경우 - 대상 스캔에이 범위에 속하지 않는 가장자리가 정의되어 있으면 결과를 얻고 모든 배경 픽셀을 newVal (흰색)로 다시 매핑합니다.

+0

감사합니다. 그것은 Photoshop의 마술 지팡이와 같은 기능입니다. 나는 나 자신과 비슷한 것을 쓰려고 생각했다. Opencv는 어떨지 모르겠습니다.왜냐하면 내 응용 프로그램의 크기가 커질 것이기 때문입니다. 하지만 난 내 자신의 필터와 opencv와 응용 프로그램의 크기를 비교해야한다고 생각. –

+0

@ АртёмИбрагимов,이 함수가 필요한 경우 openCV의 아주 작은 빌드를 만드는 것이 가능할 것으로 기대합니다. 나는 이것을 시도하지 않았지만 효과가있다. – foundry

관련 문제