2016-11-24 32 views
0

我有一個函數,生成一個直方圖的CIImage *,給定一個CGImageRef被傳遞到例程。從CIAreaHistogram/CIHistogramDisplayFilter不正確的直方圖

我得到一個直方圖圖像,但直方圖的左側似乎被壓縮,右側似乎伸出。我想知道是否需要應用CTM或者代碼是否需要返回正確的圖像。

下面是函數:

- (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 Preview應用程序或照片應用程序應顯示正確的直方圖與直方圖中心的大多數顏色。

任何幫助,非常感謝。

回答

0

禁用色彩管理解決了該問題:

NSDictionary *options = @{(id)kCIImageColorSpace : (id)kCFNull}; 
CIImage *inputImage = [CIImage imageWithCGImage: image options:options];