2017-03-20 2 views
0

저는 거리 이미지의 이미지에서 건물의 윤곽을 감지하려고합니다. 결과는 포스터에서 볼 수있는 것과 유사해야하며, 하늘은 흰색이고 건물은 검은 색으로 채워져 있어야합니다. 이는 일반적인 가장자리 감지와 다른데, 이미지에서 가장자리를 발견합니다.CIImage를 사용하여 "인테리어"(가장자리와 같은) 감지가 가능합니까?

나는 하늘이 완전히 씻겨 지도록 이미지의 대비를 강화하여이 작업을 수행하려고합니다. CIFilter를 사용하여 결과에서 가장자리 감지를 실행하려고했습니다. 나는 여전히 이것이 효과가있을 것이라고 생각하지만, 그것은 나를 위해 황당 해지고있다. 나는 이전에 이미지 프로세싱을 해본 적이 없다.

내가 더 가야하기 전에 누구도이 사전 롤백 버전을 알고 있습니까? 그래서 여기에 좋아

답변

0

내가이 문제를 해결하는 방법입니다 ... 그레이 스케일 이미지로 그것을 설정하는 CIImage를 사용하여

시작. 노아 (Noir)는 대조적 인 이미지를 생성하는 것처럼 보였기 때문에 사용했습니다.

난 후 제

결과에 콘트라스트를 강화하기위한 제 2 필터를 적용하여 블랙 픽셀이 되 내부로 순수 흑백 영상이다.

0

문제가 발생했습니다.

내가 제공하는 필터를 사용하면 내가 선호하는 방식을 처음에 소개하겠습니다. 당신이 그 (것)들을 가지고있는 경우 https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_custom_filters/ci_custom_filters.html#//apple_ref/doc/uid/TP30001185-CH6-BCICGCJF

은 "석영 작곡가"을 찾습니다 -

애플은 "엑스 코드에 대한 그래픽 도구"에 번들 특정 그래픽 툴을 가지고 여기에 문서에서 그들에게 봐주십시오. 여기 사용이 위대한 소개 : 당신이 체인 (애플에서 제공) 필터를 필요로하는 모든, 그래서 당신은 당신의 이미지 후 처리 중 최고의 얻을 https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/QuartzComposerUserGuide/qc_tutorial/qc_tutorial.html

. 코드에서 필터 매개 변수를 사용하는 것보다 재 빠르게 - 재 컴파일하고 빌드하고 실행하는 방법이 좋습니다.

좋은 결과를 얻은 후에는 매개 변수가 설정된 필터를 code et voila로 변환하면됩니다. 너는 모두 준비가되어있다.

이제 기본 아이디어로 돌아갑니다. 이미지의 대비 향상 및 최종 가장자리 감지 이것은 어떻게 보일까 (매개 변수에 나를 못 박는 다)

CIImage *outputImage = ciImage; 
// Your Idea to enhance contrast. 
CIFilter *ciColorMonochrome = [CIFilter filterWithName:@"CIColorMonochrome"]; 
[ciColorMonochrome setValue:outputImage forKey:kCIInputImageKey]; 
[ciColorMonochrome setValue:@(1) forKey:@"inputIntensity"]; 
[ciColorMonochrome setValue:[[CIColor alloc] initWithColor:[UIColor whiteColor]] forKey:@"inputColor"];// Black and white 
outputImage = [ciColorMonochrome valueForKey:kCIOutputImageKey]; 

// Now go on with edge detection 
CIImage *result = [filter valueForKey:kCIOutputImageKey]; 
CIFilter *ciEdges = [CIFilter filterWithName:@"CIEdges"]; 
[ciEdges setValue:outputImage forKey:kCIInputImageKey]; 
[ciEdges setValue:@(5) forKey:@"inputIntensity"]; 
outputImage = [ciEdges valueForKey:kCIOutputImageKey]; 
관련 문제