Будет ли что-то вроде этой работы, по сути, преобразование изображения в монохромное растровое изображение для манипулирования данными пикселей.
CGImageRef cgImage = [image CGImage];
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef bitmapContext = CGBitmapContextCreate(NULL, CGImageGetWidth(cgImage), CGImageGetHeight(cgImage), 8, CGImageGetWidth(cgImage)*2, colorSpace, kCGImageAlphaLast);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(bitmapContext, CGRectMake(0, 0, CGBitmapContextGetWidth(bitmapContext), CGBitmapContextGetHeight(bitmapContext)), cgImage);
UInt8 *data = CGBitmapContextGetData(bitmapContext);
int numComponents = 2;
int bytesInContext = CGBitmapContextGetHeight(bitmapContext) * CGBitmapContextGetBytesPerRow(bitmapContext);
int white;
int alpha;
for (int i=0; i < bytesInContext; i+= numComponents) {
white = data[i];
alpha = data[i+1];
}