Ios &引用;“内部”;使用CIImage进行(如边缘)检测?
我试图在街景图像中发现建筑物的轮廓。结果应该和你在海报上看到的相似,天空是白色的,建筑物是黑色的。这与典型的边缘检测不同,后者在整个图像中查找边缘 我试图通过增强图像的对比度来实现这一点,这样天空就会被完全冲淡。然后,我将使用CIFilter对结果执行边缘检测。我仍然认为这可能有效,但这对我来说是艰难的,我以前从未从事过图像处理Ios &引用;“内部”;使用CIImage进行(如边缘)检测?,ios,ciimage,Ios,Ciimage,我试图在街景图像中发现建筑物的轮廓。结果应该和你在海报上看到的相似,天空是白色的,建筑物是黑色的。这与典型的边缘检测不同,后者在整个图像中查找边缘 我试图通过增强图像的对比度来实现这一点,这样天空就会被完全冲淡。然后,我将使用CIFilter对结果执行边缘检测。我仍然认为这可能有效,但这对我来说是艰难的,我以前从未从事过图像处理 在我继续之前,有人知道这是一个预卷版本吗?好的,下面是我如何解决这个问题的 首先使用CIImage将其转换为灰度图像。我使用黑色,因为它似乎产生了一个更鲜明的形象 然后
在我继续之前,有人知道这是一个预卷版本吗?好的,下面是我如何解决这个问题的 首先使用CIImage将其转换为灰度图像。我使用黑色,因为它似乎产生了一个更鲜明的形象 然后我应用了第二个过滤器将对比度提高到5
结果是一个纯黑白图像,黑色像素是内部。刚刚偶然发现了您的问题 首先让我介绍一下我喜欢的方法,如果我使用苹果公司提供的过滤器的话 苹果在“xCode图形工具”中捆绑了某些图形工具-请在以下文档中查找: 如果你找到了,就去找“石英作曲家”。 请在此处使用此精彩的介绍: 这就是你所需要的所有过滤器链(由苹果提供),所以你得到最好的你的图像后处理。 我喜欢这种方法,因为它比在代码重新编译、构建和运行中使用过滤器参数要快得多 当你得到一个好的结果,你很高兴,翻译过滤器(设置参数)到代码等瞧。你们都准备好了 现在回到你的基本想法。对图像进行对比度增强和最终边缘检测。这就是它的样子(不要在参数上纠缠我)
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];