2016-11-24 3 views
0

私はCGImageRefがルーチンに渡されると、ヒストグラムのCIImage *を生成する関数を持っています。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プレビューアプリまたはPhotosアプリでは、ヒストグラムの中心に色の大部分が含まれる正しいヒストグラムが表示されます。

ご協力いただきまして誠にありがとうございます。カラーマネージメントを無効に

答えて

0

は、問題を修正しました:

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