Objective-c – CI Filter to create Black & White image

cocoaobjective c

I have a CIImage I need to convert from color to Black and White within my Cocoa / objective C program. Peter H. previously pointed me to this link http://www.codingadventures.com/2008/06/threshold-filter-in-glsl/ as a potential solution … but I am having trouble compiling the kernel routine there (see separate thread, if interested).

So I am wondering if one of the other built-in CIFilters will accomplish what I'm trying to do. I don't want a grayscale image … I want each pixel in the Result image to be either Black or White — I just need to be able to tell the filter how to determine which pixels should become black and which should become white. The "Threshold" filter in Photoshop does exactly this — it lets me specify the "threshold" and then it uses this value to decide which pixels become white and which become black. This is what I am trying to "replicate" via code in my Xcode project.

Any ideas if one of the other built in filters can be used for this? Thanks.

Best Answer

You can use the CIColorMap filter. Give it a 20(w) by 1(h) jpg where the left half is white and the right half is black (or the other way around) and use that as your color map gradient. That seems to hammer down the colors nicely. I originally tried a 2x1 image with 1 white pixel and one black, but it looked like it got interpolated a bit. I went up to 20x1 and it worked fine.

Hint: I used Core Image Funhouse (not Quartz Composer) to experiment.

Related Topic