Цель
Что я могу понять из информации по данной ссылке, вы хотели бы отфильтровать красные области на белые и все остальные области на черные.
Для этого можно использовать CIColorKernel.
CIColorKernel
Процедура обработки изображений на основе графического процессора, которая обрабатывает только информацию о цвете в изображениях, используемую для создания пользовательских фильтров Core Image.
см. https://developer.apple.com/documentation/coreimage/cicolorkernel
Скриншот
Вот скриншот с уродливым цветом фона, чтобы лучше видеть области, покрытые изображениями.
![enter image description here](https://i.stack.imgur.com/eRJ4P.png)
В верхней области показано входное изображение. В нижней области отображается полученное изображение.
Источник
import UIKit
import CoreImage
class ViewController: UIViewController {
@IBOutlet weak var upperImageView: UIImageView!
@IBOutlet weak var lowerImageView: UIImageView!
let kernelString =
"""
kernel vec4 thresholdFilter(__sample textureColor) {
if (textureColor.r > 0.8 && textureColor.g < 0.1 && textureColor.b < 0.1) {
textureColor.rgb = vec3(1.0, 1.0, 1.0);
} else {
textureColor.rgb = vec3(0.0, 0.0, 0.0);
}
return textureColor;
}
"""
let kernel: CIColorKernel
required init?(coder aDecoder: NSCoder) {
self.kernel = CIColorKernel(source: kernelString)!
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
self.upperImageView.image = UIImage(named: "example.png")
}
@IBAction func onFilter(_ sender: Any) {
guard let inputImage = upperImageView.image else { return }
guard let ciInputImage = CIImage(image: inputImage) else { return }
let ciImageFiltered = self.kernel.apply(
extent: ciInputImage.extent,
arguments: [ciInputImage])
let filteredImage = UIImage(ciImage: ciImageFiltered!)
self.lowerImageView.image = filteredImage
}
}
Это то, что вы ищете?