将RGB图像转换为1通道图像(黑/白)

如何使用ios5将RGB图像转换为1通道图像(黑/白)?

input图像通常是书页的照片。 目标是通过将其复制到1通道图像来缩小复印件的尺寸。

如果我理解你的问题,你想根据像素的亮度对图像应用黑白阈值。 要做到这一点,可以使用我的开源GPUImage项目(支持iOS 4.x)以及它提供的一些image processing操作。

特别是,GPUImageLuminanceThresholdFilter和GPUImageAdaptiveThresholdFilter可能是你在这里找的东西。 前者根据您设置的亮度阈值将像素变成黑色或白色(默认值为50%)。 后者在应用该阈值时考虑当地的平均亮度,这对于书的页面上的文本可以产生更好的结果。

在UIImage上使用这些filter非常简单:

UIImage *inputImage = [UIImage imageNamed:@"book.jpg"]; GPUImageLuminanceThresholdFilter *thresholdFilter = [[GPUImageLuminanceThresholdFilter alloc] init]; UIImage *quickFilteredImage = [thresholdFilter imageByFilteringImage:inputImage]; 

这些可以应用于实时相机馈送和相机拍摄的照片。

您可以使用Core Image将image processing为黑白图像。

使用CIEdgeWork ,这会把你的图像转换成黑白的

有关Core Image Programming的更多信息,请访问: https : //developer.apple.com/library/ios/#documentation/GraphicsImaging/Conceptual/CoreImaging/ci_tasks/ci_tasks.html#//apple_ref/doc/uid/TP30001185- CH3-TPXREF101

你正在寻找的代码可能是这样的:

 CIContext *context = [CIContext contextWithOptions:nil]; // 1 CIImage *image = [CIImage imageWithContentsOfURL:myURL]; // 2 CIFilter *filter = [CIFilter filterWithName:@"CIEdgeWork"]; // 3 [filter setValue:image forKey:kCIInputImgeKey]; [filter setValue:[NSNumber numberWithFloat:0.8f] forKey:@"InputIntensity"]; CIImage *result = [filter valueForKey:kCIOutputImageKey]; // 4 CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]; 

这里是一些示例代码,也许有帮助:

 @implementation UIImage (GrayImage) -(UIImage*)grayImage { int width = self.size.width; int height = self.size.height; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); CGContextRef context = CGBitmapContextCreate (nil,width,height,8,0,colorSpace,kCGImageAlphaNone); CGColorSpaceRelease(colorSpace); if (context == NULL) { return nil; } CGContextDrawImage(context,CGRectMake(0, 0, width, height), self.CGImage); CGImageRef cgImage = CGBitmapContextCreateImage(context); UIImage *grayImage = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); CGContextRelease(context); return grayImage; } @end 

我只是把它写成UIImage的一个类,但是不支持png图像有透明像素或者是黑色的。