2016-11-24 1 views
0

J'ai une fonction qui génère un CIImage * d'un histogramme, étant donné qu'un objet CGImageRef est transmis à la routine.Histogramme incorrect de CIAreaHistogram/CIHistogramDisplayFilter

Je récupère une image d'histogramme, mais le côté gauche de l'histogramme semble être compressé et le côté droit semble être étiré. Je me demande si je dois appliquer une marque communautaire ou si le code renvoie juste la bonne image.

Voici la fonction:

- (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; 
} 

Voici l'image à filtrer:

Original Image

Et voici mon généré Histogramme l'image:

Histogram from my function

Voir l'image dans l'application Mac Preview ou dans l'application Photos, l'histogramme correct doit s'afficher avec la majorité des couleurs au centre de l'histogramme.

Toute aide est grandement appréciée.

Répondre

0

Gestion couleur fixe Désactivation de la question:

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