Si quiero analizar el histograma de una imagen para averiguar su rango activo, ¿cuál debería ser mi enfoque en Objective-C?

Utilice GPUImageHistogramFilter y GPUImageHistogramGenerator

GPUImageHistogramFilter “codifica” el histograma de una imagen de destino como una nueva imagen:

Esto analiza la imagen entrante y crea un histograma de salida con la frecuencia con la que ocurre cada valor de color. La salida de este filtro es una imagen de 3 píxeles de alto y 256 píxeles de ancho con los píxeles centrales (verticales) que contienen píxeles que corresponden a la frecuencia con la que se produjeron varios valores de color. Cada valor de color ocupa una de las 256 posiciones de ancho, desde 0 a la izquierda hasta 255 a la derecha. Este histograma se puede generar para canales de color individuales (kGPUImageHistogramRed, kGPUImageHistogramGreen, kGPUImageHistogramBlue), la luminancia de la imagen (kGPUImageHistogramLuminance) o para los tres canales de color a la vez (kGPUImageHistogramRGB).

Normalmente usaría GPUImageHistogramGenerator para procesar esto. Podría usar algo así para producir otros medios de acceso a los datos del histograma. Mire el código fuente del método para ver cómo analizan el histograma de imagen generado anteriormente. (la belleza del código abierto)

Este es un filtro especial, ya que está diseñado principalmente para funcionar con GPUImageHistogramFilter. Genera una representación de salida de los histogramas de color generados por GPUImageHistogramFilter, pero podría reutilizarse para mostrar otros tipos de valores. Toma una imagen y mira los píxeles centrales (verticales). Luego traza los valores numéricos de los componentes RGB en gráficos de colores separados en una textura de salida. Es posible que deba forzar un tamaño para este filtro para que su salida sea visible.

Por ejemplo, si no desea una “imagen de mapa de textura de salida” pero desea una matriz de enteros, implemente una subclase y un método que se ve similar pero diferente O cree una categoría con un método de análisis alternativo.