2017-09-25 132 views
1

我想對彩色正常圖像生成掃描圖像的效果。如何像掃描圖像一樣調整彩色圖像

像下面兩張照片,第一圖像是原始圖像,第二圖像是調整後的圖像,效果應該喜歡第二圖像,在頁面背面的文字也應該消失:

第一張圖片:

original image

第二圖像:

effected image

我想使用CoreImage和CIFilter來做到這一點。除了對比度和亮度。我認爲應該像Photoshop一樣調整水平。但如何調整呢?或其他方法?

我試圖在Photoshop中調整它,它似乎是使用Photoshop的水平儀功能可以達到這樣的效果,該值顯示在下面的圖片:

enter image description here

,但我不知道該怎麼辦這使用CIFilter或其他方法?我不想導入第三方框架或來源。因爲iOS 11 Notes APP可以達到這個效果,我認爲系統的方法和框架可以做到這一點。

+0

你有什麼試過的?你做了什麼事? – matt

+0

我已經添加了一些問題解釋。@ matt – Tolecen

回答

1

請嘗試以下代碼。

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!) 

輸出:(輸出真實設備)

enter image description here


有關Core Image Filter嘗試下面的鏈接和答案更多的瞭解。

Get UIImage from functionConvert 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/


+0

非常感謝,我會嘗試一下。 – Tolecen

+0

讓我知道代碼的作品,並確保你接受答案。 – Joe

+0

感謝您的代碼,它適用於此圖片,所以我接受此答案。但是如果使用其他圖片,它可能無法正常工作。我正在努力開發一種通用的解決方案,以便它可以用於大多數此類圖片。自動製作掃描的照片。所以如果你有適當的解決方案,請幫助我。非常感謝。 – Tolecen

0

我相信,在以手工實現的Photoshop類似水平調整功能,你需要了解一些關於圖像處理領域的核心知識。

您可能需要閱讀本Core Image Programming Guide爲出發點:

https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_intro/ci_intro.html

或者,你可能只是最終使用第三方框架,儘管你已經說過,你不不想使用第三方庫。如果是這樣的話,我想推薦GPUImage2以防萬一

https://github.com/BradLarson/GPUImage2

最後,我發現這是一個類似的問題,所以你可能想看看:

How can I map Photoshop's level adjustment to a Core Image filter?

祝你好運。