2013-08-07 31 views
0

我有一张图片用于创建浮雕,将其分解为单独的红色和青色版本,并在它们之间设置视差。从UIImage中移除颜色的最快方法?

源图像是1146 x 580(视网膜分辨率)。我使用CIColorMatrix创建每个图像。这里是青色版本的代码,它删除所有的红色。

-(UIImage *)createCyan:(UIImage *)anImage 
{ 

    CIImage *inputImage = [CIImage imageWithCGImage:anImage.CGImage]; 

    CIFilter *matrixFilter = [CIFilter filterWithName:@"CIColorMatrix"]; 
    [matrixFilter setDefaults]; 
    [matrixFilter setValue:inputImage forKey:kCIInputImageKey]; 
    [matrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:0] forKey:@"inputRVector"]; 
    [matrixFilter setValue:[CIVector vectorWithX:0 Y:1 Z:0 W:0] forKey:@"inputGVector"]; 
    [matrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:1 W:0] forKey:@"inputBVector"]; 
    [matrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:1] forKey:@"inputAVector"]; 

    CIImage *outputImage = [matrixFilter outputImage]; 

    CIContext *context = [CIContext contextWithOptions:nil]; 
    CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; 

    return [UIImage imageWithCGImage:cgimg]; 
} 

问题是,这需要一秒钟以上的处理。我需要找到一个更快的方法(如果存在的话)完成同样的事情。

有没有更好的方法?

+1

你可以创建一个彩色立方体来做到这一点吗?一般来说,有关于CIFilters和Core Image的WWDC 2013(或2012)视频。他们展示了一些很酷的方法,通过创建自己的颜色映射而不是使用内置映射来加速图像处理。 – Fogmeister

+0

谢谢。我会看一看。 –

+1

@Fogmeister,你的意思是从2012年的会议511.这是非常好的。 https://developer.apple.com/videos/wwdc/2012/?id=511核心图像技术 –

回答

0

速度问题并不是过滤器,而是您重复初始化一个非常昂贵的过程CIContext。事先创建CIContext,并解决您的问题。

相关问题