Título: Funcion equivalente en C Publicado por: Kougami en 23 Mayo 2017, 14:12 pm Buenas, escribia porque no se como sacar una funcion equivalente en C del siguiente codigo escrito en asm:
Código
Si me pudieseis ayudar estaria genial. Muchas gracias de antemano Título: Re: Funcion equivalente en C Publicado por: xv0 en 23 Mayo 2017, 17:06 pm No es el lugar indicado, si comprendes el codigo en ASM escribe un pseudocode y colocalo en el sub-foro de C/C++, hay si que pueden ayudarte.
Un saludo. Título: Re: Funcion equivalente en C Publicado por: Serapis en 23 Mayo 2017, 21:59 pm RGB To Gray es una función que convierte un byte (o un array de bytes procedente de una imagen), a gris...
el gris, como sabrás tiene un solo canal (8bits), pero si se amplía a 3 canales (24 bits), lo que se hace es repetir ese valor en los 3 canales. Sea el color hexadecimal: FF54AB. Bueno, pués lo primero es decomponer el valor de 32 bits en los 3 canales sueltos, para tener los valores individuales de cada canal: Código: Valor = Valor and 16777215 // borramso un posible valor sobre el canal alfa. Código: Gris = ((rojo + verde + azul) \3) Puedes usar la fórmula más lenta de usar parcialmente cada valor en partes no iguales (LUMA): Código:
Entonces la función pelada, queda así: Código: Funcion RGBaGrisLUMA(valor) // La versión rápida: Prueba ambas, a veces no se nota demasiada diferencia de calidad. Código: Funcion RGBaGris(valor) Se admiten ligeras variaciaciones sobre los coeficientes de LUMA, pero lo que no varía es que la suma de los 3 deber ser siempre igual a 1. NOTA: Si se hacen desplazamientos, en vez de divisiones y multiplicaciones ( >>, <<), las operaciones serán mucho más rápido. |