“Seletor não reconhecido” ao tentar acessar o outputImage do CIFilt

Estou experimentando o Core Image (no OS X, 10.7.3) pela primeira vez e estou correndo contra uma parede de tijolos. Estou certo de que isso é algo bobo que estou fazendo e só preciso de alguém mais familiarizado com a estrutura para me indica

Considere o seguinte código (vamos estipular queimageURL é um URL de arquivo válido que aponta para um JPG no disco):

CIImage *inputImage = [CIImage imageWithContentsOfURL:imageURL];
CIFilter *filter = [CIFilter filterWithName:@"CIAreaAverage" keysAndValues:
                                                  kCIInputImageKey, inputImage,
                                                  kCIInputExtentKey, [inputImage valueForKey:@"extent"],
                                                  nil];
CIImage *outputImage = (CIImage *)[filter valueForKey:@"outputImage"];

Ao executar esse código, a última linha dispara:

0   CoreFoundation                      0x00007fff96c2efc6 __exceptionPreprocess + 198
1   libobjc.A.dylib                     0x00007fff9153cd5e objc_exception_throw + 43
2   CoreFoundation                      0x00007fff96cbb2ae -[NSObject doesNotRecognizeSelector:] + 190
3   CoreFoundation                      0x00007fff96c1be73 ___forwarding___ + 371
4   CoreFoundation                      0x00007fff96c1bc88 _CF_forwarding_prep_0 + 232
5   CoreImage                           0x00007fff8f03c38d -[CIAreaAverage outputImage] + 52
6   Foundation                          0x00007fff991d8384 _NSGetUsingKeyValueGetter + 62
7   Foundation                          0x00007fff991d8339 -[NSObject(NSKeyValueCoding) valueForKey:] + 392

Agora, a Referência do filtro de imagem principal afirma claramente que CIAreaAverage "Retorna uma imagem de pixel único que contém a cor média da região de interesse". De fato, ainda mais desconcertante quando examino os atributos de filtro no depurador (antes de tentar ovalueForKey: ligar)

(lldb) po [filter attributes]
(id) $3 = 0x00007fb3e3ef0e00 {
    CIAttributeDescription = "Calculates the average color for the specified area in an image, returning the result in a pixel.";
    CIAttributeFilterCategories =     (
        CICategoryReduction,
        CICategoryVideo,
        CICategoryStillImage,
        CICategoryBuiltIn
    );
    CIAttributeFilterDisplayName = "Area Average";
    CIAttributeFilterName = CIAreaAverage;
    CIAttributeReferenceDocumentation = "http://developer.apple.com/cgi-bin/apple_ref.cgi?apple_ref=//apple_ref/,doc/filter/ci/CIAreaAverage";
    inputExtent =     {
        CIAttributeClass = CIVector;
        CIAttributeDefault = "[0 0 640 80]";
        CIAttributeDescription = "A rectangle that specifies the subregion of the image that you want to process.";
        CIAttributeDisplayName = Extent;
        CIAttributeType = CIAttributeTypeRectangle;
        CIUIParameterSet = CIUISetBasic;
    };
    inputImage =     {
        CIAttributeClass = CIImage;
        CIAttributeDescription = "The image to process.";
        CIAttributeDisplayName = Image;
        CIUIParameterSet = CIUISetBasic;
    };
    outputImage =     {
        CIAttributeClass = CIImage;
    };
}

outputImage ali - fornecido como tipo CIImage!

Então, o que estou fazendo de errado? Todos os documentos e tutoriais que eu vi indicam que-valueForKey: é a maneira correta de acessar atributos, incluindooutputImage.

questionAnswers(4)

yourAnswerToTheQuestion