CIAreaHistogram / CIHistogramDisplayFilter 的直方图不正确
Incorrect Histogram from CIAreaHistogram / CIHistogramDisplayFilter
我有一个生成直方图的 CIImage* 的函数,给定一个 CGImageRef 传递给例程。
我得到了一张直方图图像,但直方图的左侧似乎被压缩了,而右侧似乎被拉长了。我想知道我是否需要应用 CTM,或者代码是否应该 return 正确的图像。
函数如下:
- (CIImage*)histogramFromCGImage:(CGImageRef)image
{
CIImage *inputImage = [[CIImage alloc] initWithCGImage:image];
CIVector *inputExtent = [CIVector vectorWithCGRect:inputImage.extent];
NSNumber *inputCount = [NSNumber numberWithInteger:256];
NSNumber *inputScale = [NSNumber numberWithInteger:25];
CIImage *histogramOutputImage = [inputImage imageByApplyingFilter:@"CIAreaHistogram"
withInputParameters:@{
@"inputExtent" : inputExtent,
@"inputCount" : inputCount,
@"inputScale" : inputScale}
];
CIImage *outHistogramImage = [histogramOutputImage imageByApplyingFilter:@"CIHistogramDisplayFilter"
withInputParameters:nil];
return outHistogramImage;
}
这里是要过滤的图片:
Original Image
这是我生成的直方图图像:
Histogram from my function
在 Mac 预览应用或照片应用中查看图像应该会显示正确的直方图,大多数颜色位于直方图的中心。
非常感谢任何帮助。
禁用颜色管理解决了问题:
NSDictionary *options = @{(id)kCIImageColorSpace : (id)kCFNull};
CIImage *inputImage = [CIImage imageWithCGImage: image options:options];
我有一个生成直方图的 CIImage* 的函数,给定一个 CGImageRef 传递给例程。
我得到了一张直方图图像,但直方图的左侧似乎被压缩了,而右侧似乎被拉长了。我想知道我是否需要应用 CTM,或者代码是否应该 return 正确的图像。
函数如下:
- (CIImage*)histogramFromCGImage:(CGImageRef)image
{
CIImage *inputImage = [[CIImage alloc] initWithCGImage:image];
CIVector *inputExtent = [CIVector vectorWithCGRect:inputImage.extent];
NSNumber *inputCount = [NSNumber numberWithInteger:256];
NSNumber *inputScale = [NSNumber numberWithInteger:25];
CIImage *histogramOutputImage = [inputImage imageByApplyingFilter:@"CIAreaHistogram"
withInputParameters:@{
@"inputExtent" : inputExtent,
@"inputCount" : inputCount,
@"inputScale" : inputScale}
];
CIImage *outHistogramImage = [histogramOutputImage imageByApplyingFilter:@"CIHistogramDisplayFilter"
withInputParameters:nil];
return outHistogramImage;
}
这里是要过滤的图片:
Original Image
这是我生成的直方图图像:
Histogram from my function
在 Mac 预览应用或照片应用中查看图像应该会显示正确的直方图,大多数颜色位于直方图的中心。
非常感谢任何帮助。
禁用颜色管理解决了问题:
NSDictionary *options = @{(id)kCIImageColorSpace : (id)kCFNull};
CIImage *inputImage = [CIImage imageWithCGImage: image options:options];