Tengo una colección de fotos JPEG, cada una de 500 a 600 píxeles en el lado más largo. ¿Cómo puedo detectar cuáles se han ampliado algorítmicamente a partir de una foto sustancialmente más pequeña?
Un mercado en línea requiere que cada vendedor cargue fotos de los productos que vende, y estas fotos deben tener al menos 500 píxeles de ancho o 500 píxeles de alto porque las fotos de productos con pocos detalles causan una mala experiencia para los compradores. Ya puedo decir si un vendedor está tratando de eludir este requisito agregando un borde de color sólido, como extender el fondo blanco estándar con más blanco. Pero últimamente, los vendedores han comenzado a eludir esto mejorando las fotos antiguas tomadas antes de que se publicara el requisito de 500 píxeles. ¿Cuál es una buena manera de determinar si las fotos se han ampliado con la interpolación vecina, bilineal o bicúbica más cercana?
fuente
Respuestas:
Haga que un PERRO huela borroso en las fotos.
Si va a penalizar las fotos ampliadas digitalmente, también podría penalizar las fotos desenfocadas. Los bordes borrosos y los detalles en ambos causan la misma mala experiencia para los espectadores, independientemente de si es causada por un pequeño foco original o deficiente. Lo que desea hacer es detectar el desenfoque, que es la ausencia de altas frecuencias espaciales.
Intenta tomar la diferencia entre una imagen y una copia borrosa de sí misma. Si una imagen ya está borrosa, un desenfoque gaussiano de 1 píxel no va a cambiar la imagen tanto como si la imagen fuera nítida. Por lo tanto, habrá más diferencia entre una imagen nítida y una versión borrosa que entre una imagen borrosa y otra versión borrosa. En la visión por computadora, esta técnica se llama la " diferencia de los gaussianos " (DOG).
Acabo de probar esto en una foto de 400x480 píxeles y en la misma cosa que se redujo a 200x240 (50%) y luego se amplió de nuevo a 400x480 (200%), y los bordes de la foto mejorada fueron notablemente más débiles. No será concluyente en un aumento leve como 140%, pero captará casos evidentes.
Varias bibliotecas de visión por computadora incluyen medios para calcular la diferencia de gaussianos en una imagen. Lo mismo hacen muchos editores de imágenes gráficas. Versiones recientes de GIMP, por ejemplo. incluya una macro DOG que automatice los pasos 2 a 4: Filtros> Detección de bordes> Diferencia de gaussianos, luego configure los radios en 1.0 y 0.0.
Preguntas relacionadas en otros sitios de Stack Exchange:
El PERRO no atrapará al vecino más cercano, pero puede hacerlo buscando un patrón de filas y columnas que sean idénticas a su vecino inmediato hacia la parte superior o izquierda.
fuente
x + amt*(x - GB(x, r))
. La combinación de USM y ampliación solo aumentará los medios (frecuencias espaciales medias), no los máximos, porque los máximos no existen. PERRO (x, 1, 0) aísla los máximos.No creo que esto sea posible en el sentido general. Existen muchos algoritmos de escalamiento posibles, con una firma que puede ser difícil de detectar sin ambigüedades sin el conocimiento del contenido de la imagen (como un ejemplo extremo, un área escalada de color uniforme sigue siendo color uniforme ...).
Posiblemente, una opción sería calcular una métrica para la complejidad de la imagen, como una estimación de entropía (por ejemplo, consulte /programming/4935380/get-or-calculate-the-entropy-of-an-image-with -ruby-and-imagemagick ).
Si hace esto en una gran cantidad de imágenes, puede generar estadísticas para toda la colección. Luego, puede revisar manualmente las imágenes que son atípicas en esas estadísticas.
Desafortunadamente, esto siempre dará como resultado falsos positivos y las imágenes que han sido escaladas bien pueden no ser captadas (pero si son buenas, ¿importa?)
fuente
Tomaría un enfoque híbrido. Creo que las otras ideas de usar una diferencia de gaussianos, verificar EXIF u otros metadatos, o incluso FFT se pueden combinar. Otra forma posiblemente más fácil es simplemente tomar cada imagen, reducirla, aumentarla nuevamente y comparar. Si son muy similares (usando algo como Delta E , tal vez), entonces es probable que hayan sido mejorados (o borrosos como sugiere otra publicación). ¿Quizás podría establecer un umbral de la cantidad de pruebas aprobadas vs. reprobadas? Si pasan más de la mitad de las pruebas, entonces es bueno, de lo contrario, es malo, o necesita intervención humana para verificar, o algo así.
fuente
Debería poder hacer un trabajo lo suficientemente bueno desempacando parcialmente los datos JPEG y haciendo un recuento trivial.
Los datos JPEG se crean realizando una transformada discreta del coseno en los datos de la imagen original, cuantificando (desechando los datos de alta resolución), luego caminando a través del bloque DCT resultante en un patrón en zigzag y empacando el flujo de bits resultante con la codificación Huffman.
Si invierte la codificación Huffman y deshace el zigzag, tendrá una serie de bloques DCT de 8x8, en los que los datos de frecuencia más baja se encuentran en la esquina superior izquierda del bloque y la información de frecuencia más alta se encuentra en la esquina inferior derecha.
Lo que eso significa es que, literalmente, puedes echar un vistazo a los datos en ese formato intermedio y saber si se muestreó, ya que todos los bloques de 8x8 tendrán valores distintos de cero solo en la esquina superior izquierda (aproximadamente).
fuente
En realidad puedes
No necesitas un perro para oler la imagen. Ir:
http://rest7.com/image_upscaled
En esta página puede cargar su imagen y obtendrá dimensiones originales , como esta:
A veces no adivina la resolución original correctamente. Creo que depende del algoritmo de aumento de escala utilizado en la foto. También descubrí que si una foto se escalaba y luego se comprimía a un formato JPEG con una gran compresión (como 30%), los artefactos JPEG hacen que sea más difícil adivinar esta página. Pero si sus fotos son de buena calidad, mejoradas utilizando métodos populares (Lanczos, Bilinear), deberían ser bastante precisas.
Aquí hay 2 imágenes de muestra:
ORIGINAL
https: // i. apilar. imgur com / iXYKV.png
(lo siento, no tengo suficiente reputación para publicar más de 2 enlaces)
UPSCALED Y CROPPED
Si publica la foto recortada, esta página le devolverá:
Para que pueda ver que detectó que la imagen se amplió y recortó. No le indicará el tamaño de la imagen original antes de recortar, ya que no es posible obtener información sobre algo que se eliminó solo de los píxeles que quedan intactos.
fuente