如何像扫描图像一样调整彩色图像
我想对彩色正常图像生成扫描图像的效果。如何像扫描图像一样调整彩色图像
像下面两张照片,第一图像是原始图像,第二图像是调整后的图像,效果应该喜欢第二图像,在页面背面的文字也应该消失:
第一张图片:
第二图像:
我想使用CoreImage和CIFilter来做到这一点。除了对比度和亮度。我认为应该像Photoshop一样调整水平。但如何调整呢?或其他方法?
我试图在Photoshop中调整它,它似乎是使用Photoshop的水平仪功能可以达到这样的效果,该值显示在下面的图片:
,但我不知道该怎么办这使用CIFilter或其他方法?我不想导入第三方框架或来源。因为iOS 11 Notes APP可以达到这个效果,我认为系统的方法和框架可以做到这一点。
请尝试以下代码。
func getScannedImage(inputImage: UIImage) -> UIImage? {
let openGLContext = EAGLContext(api: .openGLES2)
let context = CIContext(eaglContext: openGLContext!)
let filter = CIFilter(name: "CIColorControls")
let coreImage = CIImage(image: filterImage.image!)
filter?.setValue(coreImage, forKey: kCIInputImageKey)
//Key value are changable according to your need.
filter?.setValue(7, forKey: kCIInputContrastKey)
filter?.setValue(1, forKey: kCIInputSaturationKey)
filter?.setValue(1.2, forKey: kCIInputBrightnessKey)
if let outputImage = filter?.value(forKey: kCIOutputImageKey) as? CIImage {
let output = context.createCGImage(outputImage, from: outputImage.extent)
return UIImage(cgImage: output!)
}
return nil
}
你可以像下面这样调用上面的func。
filterImage.image = getImage(inputImage: filterImage.image!)
输出:(输出真实设备)
有关Core Image Filter
尝试下面的链接和答案更多的了解。
Get UIImage from function和Convert UIImage to grayscale keeping image quality
核心图像过滤器,从苹果文档参考:https://developer.apple.com/library/content/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html
注:有关更具体的要求,你需要创建自己的自定义过滤器。以下链接可能有帮助https://spin.atomicobject.com/2016/10/20/ios-image-filters-in-swift/
我相信,在以手工实现的Photoshop类似水平调整功能,你需要了解一些关于图像处理领域的核心知识。
您可能需要阅读本Core Image Programming Guide
为出发点:
或者,你可能只是最终使用第三方框架,尽管你已经说过,你不不想使用第三方库。如果是这样的话,我想推荐GPUImage2
,以防万一:
最后,我发现这是一个类似的问题,所以你可能想看看:
How can I map Photoshop's level adjustment to a Core Image filter?
祝你好运。
你有什么试过的?你做了什么事? – matt
我已经添加了一些问题解释。@ matt – Tolecen