Quem sou eu e o que este blog.

Minha foto

Sou viciado em computação, Internet e Fotografia. Morei por quase 6 anos, e ainda frequento, Paraty. Sou usuário de softwares Open Source, tendo dado algumas contribuições em diversas ocasiões.

sexta-feira, 1 de junho de 2012

Repetitividade de qualidade de JPEG

Quando eu escrevia o artigo sobre "Por que trabalhar com TIFF, e não JPEG?" me bateu a curiosidade sobre repetitividade de qualidade de JPEG.

Vou usar a mesma foto usada nos artigos JPEG não é compactação e no "Por que trabalhar com TIFF, e não JPEG?", os quais recomendo lerem, especialmente o segundo pois vai ser necessário para entender este artigo.


Note: Este artigo é técnico com um certo grau de "nerdice", mas de leitura opcional (Pode ser bom para entender que o JPEG altera mesmo recodificando a mesma imagem usando o mesmo nível de qualidade.). Não precisa entender os scripts que vou colocar, mas eu tenho que colocar por questões de metodologia científica, para mostrar como fiz a experiência, e como pode ser reproduzida. Terão as conclusões de cada experimento, que poderão ser aceitas pelas evidências apresentadas, ou, em caso de dúvida, podem perguntar nos comentários, ou até mesmo tentar reproduzir a experiência.

Definições

Este tópico é de leitura obrigatório aos leigos, necessário para poder entender o resto do artigo, exceto se já leu no outro artigo.

Script

Script é uma sequência de comandos, um roteiro de execução, que muitas vezes forma um pequeno programa. Muito útil para tarefas repetitivas, como colocar logotipo em uma grande quantidade de fotografias, fazer backup, rotinas de manutenção do sistema etc.

SHA256 e assinatura digital

Existem vários métodos de verificação de dados, como os 2 últimos dígitos do CPF, o dígito de verificação de uma conta bancária etc. Estes dígitos de verificação são criados usando os dados e um fórmula matemática.

O SHA256 é uma fórmula bem complexa para verificação de dados e arquivos. Acredita-se que não existam dois arquivos diferentes com a mesma assinatura por este método, e aparentemente ninguém conseguiu quebrá-lo ainda.

Compactação x compressão

Pela definição que li a muitos anos atrás, a compactação é a redução dos dados, de certa forma simplificando redundâncias, de modo que não se perca nenhuma informação. Métodos de compactação são muito usados com arquivos, e estão embutidos dentro dos programas Winzip, Winrar, GZip etc. Nela não é admitida a perda de dados.

A compressão é diferente. Ela admite alguma perda de dados, para gerar algo mais fácil de compactar. O MP3, o JPEG etc, são assim. Eles são aproximações matemáticas do som, ou da imagem, original, mas são exatamente iguais. Quanto mais perda aceitar, menor pode ficar o arquivo (Seria como jogar fora alguns detalhes.).

Preparação do arquivo inicial

(Leitura opcional, só para quem se interessar em reproduzir a experiência.)

O arquivo inicial foi gerado pelo meu script de colocação de logotipos, mostrado abaixo:

# !/bin/sh

for i in $*
do
        nome=`basename $i`

        if ! test -f ~/trabalho/imagens/00_Reduzidas/$nome
        then

                case `exiftool -Orientation -S $i` in

                'Orientation: Horizontal (normal)')
                        jpegtopnm < $i | pnmscale -pixels=500000 | pamcomp -valign=top -align=left -opacity=0.35 -xoff=10 -yoff=10 ~/trabalho/imagens/gimp/Logo/JGoffredo_003.pnm | pnmtojpeg -quality=95 > ~/trabalho/imagens/00_Reduzidas/$nome
                        ;;
                'Orientation: Rotate 270 CW')
                        jpegtopnm < $i | pnmscale -pixels=500000 | pamflip -ccw | pamcomp -valign=top -align=left -opacity=0.35 -xoff=10 -yoff=10 ~/trabalho/imagens/gimp/Logo/JGoffredo_003.pnm | pnmtojpeg -quality=95 > ~/trabalho/imagens/00_Reduzidas/$nome
                        ;;
                *)
                        echo -n "Rotacao desconhecida: $i "
                        read a
                        jpegtopnm < $i | pnmscale -pixels=500000 | pamcomp -valign=top -align=left -opacity=0.35 -xoff=10 -yoff=10 ~/trabalho/imagens/gimp/Logo/JGoffredo_003.pnm | pnmtojpeg -quality=95 > ~/trabalho/imagens/00_Reduzidas/$nome
                        ;;
                esac

                touch -r $i ~/trabalho/imagens/00_Reduzidas/$nome

        fi
done


Assim o arquivo JPEG que saiu da câmera foi reduzido e recebeu o logotipo, gerando o arquivo necessário para o resto dos testes.

Quem quiser reproduzir os testes, pode fazê-lo com qualquer imagem, inclusive a que saiu diretamente da câmera. Este script está aqui mais para mostrar que usei o nível de qualidade 95 para a imagem original.

E a repetitividade do JPEG

Aqui eu tive uma surpresa interessante.

Parece que, dentro do mesmo nível de qualidade, o tamanho não muda muito, e a qualidade mantém mais ou menos o mesmo nível, mas não fiz nenhuma alteração na imagem, o que poderia causar uma grande perturbação e afetar mais ainda a qualidade.

O script para este teste está abaixo:

#!/bin/sh

# Criado por Joao Rocha Braga Filho para o teste de perdas por recodificacao.

qualid=$1

echo Qualidade $qualid

# Arquivo original.
anterior=DSC_6173.JPG

for i in 0 1 2
do
        for j in 0 1 2 3 4 5 6 7 8 9
        do
                echo $i$j
                nome=recodif_"$qualid"_"$i""$j".jpg

                jpegtopnm < $anterior | pnmtojpeg -quality=$qualid > $nome

                anterior=$nome
        done
done


O script aceita como parâmetro o nível de qualidade, e gera 30 arquivos com aquele nível, cada versão sendo derivada do anterior, e o primeiro, número 00, derivada do original DSC_6173.JPG.

goffredo:GoffredoNB2[530] ls -lsrt recodif_*_00.jpg recodif_*_29.jpg DSC_6173.JPG
174 -rw-r--r--  1 goffredo  users  177845 Oct 29  2011 DSC_6173.JPG
 42 -rw-r--r--  1 goffredo  users   41557 May 16 22:45 recodif_40_00.jpg
 42 -rw-r--r--  1 goffredo  users   41535 May 16 22:45 recodif_40_29.jpg
 54 -rw-r--r--  1 goffredo  users   55238 May 16 22:45 recodif_60_00.jpg
 54 -rw-r--r--  1 goffredo  users   55206 May 16 22:45 recodif_60_29.jpg
 84 -rw-r--r--  1 goffredo  users   84751 May 16 22:45 recodif_80_00.jpg
 84 -rw-r--r--  1 goffredo  users   84701 May 16 22:45 recodif_80_29.jpg
134 -rw-r--r--  1 goffredo  users  135749 May 16 22:45 recodif_90_00.jpg
134 -rw-r--r--  1 goffredo  users  135757 May 16 22:45 recodif_90_29.jpg
176 -rw-r--r--  1 goffredo  users  178474 May 16 22:45 recodif_95_00.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 16 22:45 recodif_95_29.jpg
256 -rw-r--r--  1 goffredo  users  233844 May 16 22:45 recodif_98_00.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 16 22:45 recodif_98_29.jpg
304 -rw-r--r--  1 goffredo  users  291416 May 16 22:45 recodif_100_00.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 16 22:45 recodif_100_29.jpg
goffredo:GoffredoNB2[531] sha256 DSC_6173.JPG recodif_*_00.jpg recodif_*_29.jpg
SHA256 (DSC_6173.JPG) = cd4acba1f57416d701a3c3700944df80b49149da79230f860d34874c4a74f7a6
SHA256 (recodif_100_00.jpg) = 89d931f3bbcc259cb9f3aa0a8344a804bef979c86cac0542ca1bdd25d6556cab
SHA256 (recodif_40_00.jpg) = d808764853b9c7d7fc78da3e1cb9b1c3361ea3106e112f65428139d9b31b43b0
SHA256 (recodif_60_00.jpg) = 321040b9ae22c94e01167c580184b0640a9b428071fa50333aebfb88911cc7d7
SHA256 (recodif_80_00.jpg) = 0a72967477c3fc085fc863717775afed6d9e828ddc0944adf35cc341bf8f5663
SHA256 (recodif_90_00.jpg) = 9b69d6be2db2be956887e240dd7e70d5f36118d7981523572893f6a62c445038
SHA256 (recodif_95_00.jpg) = 2ad84e08e35b71b4062c0260b56550f504818c07b6c3c5a752c8ca68e0d0aaad
SHA256 (recodif_98_00.jpg) = bc6ed1523eb043bc1f46bea6a243304463c2faddd9ff91f0103cd388ab9b3e1a
SHA256 (recodif_100_29.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_40_29.jpg) = b915e132808f246255542ec81a7ce533c8581ff2f086ff2eab90d71b977716c7
SHA256 (recodif_60_29.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_80_29.jpg) = 3b80e8139dc94db15b7e2ae96def42598be9803c0333d9e3817dd2f942056659
SHA256 (recodif_90_29.jpg) = 3df147900849be9a22cb4415d97b8b1056ca7d91dac81bf3aefe508bbfb1844c
SHA256 (recodif_95_29.jpg) = b746a4096b8a43529786be8320c4d4c6c90288cf20b0a3e0c91560e4af4d7daa
SHA256 (recodif_98_29.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2


Nenhum dos arquivos finais, e nem mesmo os iniciais da sequência, tem a mesma assinatura SHA256 do arquivo original, portanto são diferentes.

Nível 40

No nível de qualidade de 40, alguns arquivos tinham tamanho igual:

42 -rw-r--r--  1 goffredo  users  41557 May 16 22:45 recodif_40_00.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_01.jpg
42 -rw-r--r--  1 goffredo  users  41510 May 16 22:45 recodif_40_02.jpg
42 -rw-r--r--  1 goffredo  users  41536 May 16 22:45 recodif_40_03.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_04.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_05.jpg
42 -rw-r--r--  1 goffredo  users  41507 May 16 22:45 recodif_40_06.jpg
42 -rw-r--r--  1 goffredo  users  41507 May 16 22:45 recodif_40_07.jpg
42 -rw-r--r--  1 goffredo  users  41528 May 16 22:45 recodif_40_08.jpg
42 -rw-r--r--  1 goffredo  users  41518 May 16 22:45 recodif_40_09.jpg
42 -rw-r--r--  1 goffredo  users  41518 May 16 22:45 recodif_40_10.jpg
42 -rw-r--r--  1 goffredo  users  41518 May 16 22:45 recodif_40_11.jpg
42 -rw-r--r--  1 goffredo  users  41504 May 16 22:45 recodif_40_12.jpg
42 -rw-r--r--  1 goffredo  users  41504 May 16 22:45 recodif_40_13.jpg
42 -rw-r--r--  1 goffredo  users  41504 May 16 22:45 recodif_40_14.jpg
42 -rw-r--r--  1 goffredo  users  41504 May 16 22:45 recodif_40_15.jpg
42 -rw-r--r--  1 goffredo  users  41504 May 16 22:45 recodif_40_16.jpg
42 -rw-r--r--  1 goffredo  users  41504 May 16 22:45 recodif_40_17.jpg
42 -rw-r--r--  1 goffredo  users  41504 May 16 22:45 recodif_40_18.jpg
42 -rw-r--r--  1 goffredo  users  41504 May 16 22:45 recodif_40_19.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_20.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_21.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_22.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_23.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_24.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_25.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_26.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_27.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_28.jpg
42 -rw-r--r--  1 goffredo  users  41535 May 16 22:45 recodif_40_29.jpg


Mas nenhum foi igual ao outro, como pode-se pelas assinaturas (ordenei pelas assinaturas para ser mais facilmente visto):

SHA256 (recodif_40_07.jpg) = 0496f756dc326093c8b4f4c0cc12a3d53bd514db016435dbb61d25fcd70a90a4
SHA256 (recodif_40_02.jpg) = 05c78472da24b1151aea25918a595b9fd6dfb9035d51fe1b484a7936658c1219
SHA256 (recodif_40_14.jpg) = 3f71661428efbb898541fc17e3b48d1502b475d175ef7f97f61673c1d2a28199
SHA256 (recodif_40_18.jpg) = 48eb6f3815233d37bae5335cabe7267ccac3d87e415799082ffe33c32ff1c7c9
SHA256 (recodif_40_17.jpg) = 4951346c69b3a696299eb3f9847d69db1e8f6297c00db3b050e1a9b102511b22
SHA256 (recodif_40_10.jpg) = 4ea25e64db5b33b5c53423480d60bd412e7ae6b2df27dae0141b49d7c8d081c1
SHA256 (recodif_40_09.jpg) = 68938163166fcf2b86f5bfffc6a10cc2093a392edc8916ad10fd19332a7ca9ec
SHA256 (recodif_40_11.jpg) = 6a1e31560357c4f1671e1365e7c386ae7f108d5b5b56cb67157f12416a815489
SHA256 (recodif_40_16.jpg) = 6ae252dd5847493725e31d68eb0085f9a50d6f13e05a44eb463848fe2562037f
SHA256 (recodif_40_19.jpg) = 6e68b614006b6a2ce6ee590c2384ca54d83525e9b27f7f749dfc8ecd55d17873
SHA256 (recodif_40_01.jpg) = 771620d41250839c6ea977d4f99576cb00a135bb89648b9827454b50dbc6a8ee
SHA256 (recodif_40_08.jpg) = 77dca0980dde538a67279026a338c1e737ae88d1fb5b363fb4ef4b8460e3d1b2
SHA256 (recodif_40_12.jpg) = 8490381ffb1bee243659619d510a2987d68cfa572d19b857eb04ffcfd6c2e074
SHA256 (recodif_40_26.jpg) = 86384aabee5b57b24bb6b578483ce4ddcd2d0bec62a25e2a311e44bb3028dca6
SHA256 (recodif_40_04.jpg) = 87cc729fdc172c947fadeb65561d6a4eb6e2deaa8cbb54a5107efeeea77272df
SHA256 (recodif_40_28.jpg) = 970f89790fc9b8ad93640c23add2016261eec712d67e86d26ce1f27e5e178f80
SHA256 (recodif_40_13.jpg) = 99874ec3aa788d2adeac30c2cc0eb5baec19010c071c5cdce9d4c36506776cce
SHA256 (recodif_40_24.jpg) = 9d546cb17089041c8d209e8d9d2275780302eb8d30722cccd7c88ce774aba319
SHA256 (recodif_40_22.jpg) = a3124c7f8f548f25420a2d742976c60408f85d91a22f0c98cbcaa6536bdc0fcf
SHA256 (recodif_40_03.jpg) = b8e3bea457b2caca99cb0350a583aa12bc3cde6bbcff120a641cad1f997d8b60
SHA256 (recodif_40_29.jpg) = b915e132808f246255542ec81a7ce533c8581ff2f086ff2eab90d71b977716c7
SHA256 (recodif_40_25.jpg) = c05dd686958a4fa870eae2efb8587cdf7b6cc32ee93d6d5cdc088873e7c3ca2d
SHA256 (recodif_40_15.jpg) = c7f8fadf7569cc2c1b85000c40e069036af8ac53d8e98734428dc0601fef661b
SHA256 (recodif_40_05.jpg) = d7ea558d21b7a1b36ca868831af902e51d08f77b3321cd1ef06eb0f47a32a399
SHA256 (recodif_40_00.jpg) = d808764853b9c7d7fc78da3e1cb9b1c3361ea3106e112f65428139d9b31b43b0
SHA256 (recodif_40_27.jpg) = de05eab249491403f4270611d695c7769019e9d1cd2628897775e2450c5a826f
SHA256 (recodif_40_06.jpg) = e28442f89c7f84a9123589cdbfbb6091bc2c8bd5cf6c06fd37f4a68456299dd4
SHA256 (recodif_40_21.jpg) = edaee45d7f0f412e6a07f4c77b23686a9035d9c16893236b25a3d74ff703330c
SHA256 (recodif_40_23.jpg) = ef19456aa6c2565a44d4ff0bf57c6f58b95570462d6600d37fb52e54d5421019
SHA256 (recodif_40_20.jpg) = fcb469561d9d8194796b979584d7df7d6497fb642be269b79c9537aaab9d38df


A primeira e a última imagem desta série estão abaixo. Pode comparar, se quiser, com a imagem no topo do artigo. Para facilitar, sugiro usar o botão direito do mouse, e pedir para abrir as imagens em outras abas ou janelas, e assim a verá no tamanho original.

Qualidade 40, primeira imagem da série.

Qualidade 40, trigésima imagem da série.

Olhos treinados podem achar ruídos por volta das copas das árvores sem ter que ampliar a imagem. Procurando com calma deve ser possível achar mais coisa. Este é um exemplo de perda de qualidade que um JPEG de baixa qualidade cria.

Nível 60

No nível de qualidade de 60, mais arquivos tinham tamanho igual:

 54 -rw-r--r--  1 goffredo  users  55238 May 16 22:45 recodif_60_00.jpg
 54 -rw-r--r--  1 goffredo  users  55213 May 16 22:45 recodif_60_01.jpg
 54 -rw-r--r--  1 goffredo  users  55217 May 16 22:45 recodif_60_02.jpg
 54 -rw-r--r--  1 goffredo  users  55226 May 16 22:45 recodif_60_03.jpg
 54 -rw-r--r--  1 goffredo  users  55213 May 16 22:45 recodif_60_04.jpg
 54 -rw-r--r--  1 goffredo  users  55231 May 16 22:45 recodif_60_05.jpg
 54 -rw-r--r--  1 goffredo  users  55230 May 16 22:45 recodif_60_06.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_07.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_08.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_09.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_10.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_11.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_12.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_13.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_14.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_15.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_16.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_17.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_18.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_19.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_20.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_21.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_22.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_23.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_24.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_25.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_26.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_27.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_28.jpg
 54 -rw-r--r--  1 goffredo  users  55206 May 16 22:45 recodif_60_29.jpg


Foi como se convergisse para 55206 bytes, atingindo este tamanho na versão 07. Mas o que a assinatura digital me diz?

SHA256 (recodif_60_09.jpg) = 276af530efea5dcff8fadec15503512cda5a97bb5b860cf4f9a54c597aa4813a
SHA256 (recodif_60_11.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_12.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_13.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_14.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_15.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_16.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_17.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_18.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_19.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_20.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_21.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_22.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_23.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_24.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_25.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_26.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_27.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_28.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_29.jpg) = 2893516a49105d491c0ad0627bdc736214d3e7e8cc8c96ee283cf05e10177887
SHA256 (recodif_60_00.jpg) = 321040b9ae22c94e01167c580184b0640a9b428071fa50333aebfb88911cc7d7
SHA256 (recodif_60_02.jpg) = 509dbaa389b92e6f2992ef7288e50dde38120a35c7b84ebae39294e1db37b544
SHA256 (recodif_60_01.jpg) = 569a72a6d4fede61bf956ccefb8a46d3fc04f04926a8352458240b9c8d4e8f2b
SHA256 (recodif_60_05.jpg) = 5c985a486387d04b86eb958835acddd7114d5b3cd78e7694cc12db4b26bf4185
SHA256 (recodif_60_07.jpg) = 5cd7272f10c82c434ef0e0d8a4e5d07484fecff0331b2675c64fce6166e5191e
SHA256 (recodif_60_03.jpg) = 7c324b0be96eaf7f013e1a43bc07212b0705dee3f071b4d020a77836b9b70869
SHA256 (recodif_60_08.jpg) = b30d312b0ea42410c11ce11bf286ef678ce25fdf9ce039751f0cef1fe7b15d2c
SHA256 (recodif_60_10.jpg) = b894988fe4c07553fbe11a851ca06125ce8c3611a38dc6459d34c2add020893d
SHA256 (recodif_60_06.jpg) = d2e3dc4e1885b6ac29d0cfc175ec1decea6a804d671abd659fc6cb7db236b988
SHA256 (recodif_60_04.jpg) = fe102e90e2bb3e97687882681dad79d604bfb675cc4ade451717d4f5f44262df


Curiosamente, convergiu, mas foi da versão 11 em diante. Ou seja, ele atingiu um estado no qual preserva a imagem, depois de várias alterações nela.

A primeira e a última imagem desta série estão abaixo. Pode comparar, se quiser, com a imagem no topo do artigo. Para facilitar, sugiro usar o botão direito do mouse, e pedir para abrir as imagens em outras abas ou janelas, e assim a verá no tamanho original.

Qualidade 60, primeira imagem da série.

Qualidade 60, trigésima imagem da série.

A primeira imagem já apresenta um ruído por volta das copas das árvores. Deve ter mais coisa ainda espalhada pela imagem. O meu logotipo também está ruidoso.

Nível 80

O primeiro pensamento é que pode ter convergido mais cedo, não? Errou. Nem sequer convergiu para as primeiras 30 vezes. Isto mostra como a coisa é aleatória. Tiveram sequências com o meso tamanho, mas os conteúdos eram diferentes:

 84 -rw-r--r--  1 goffredo  users  84751 May 17 00:23 recodif_80_00.jpg
 84 -rw-r--r--  1 goffredo  users  84728 May 17 00:23 recodif_80_01.jpg
 84 -rw-r--r--  1 goffredo  users  84709 May 17 00:23 recodif_80_02.jpg
 84 -rw-r--r--  1 goffredo  users  84731 May 17 00:23 recodif_80_03.jpg
 84 -rw-r--r--  1 goffredo  users  84725 May 17 00:23 recodif_80_04.jpg
 84 -rw-r--r--  1 goffredo  users  84719 May 17 00:23 recodif_80_05.jpg
 84 -rw-r--r--  1 goffredo  users  84710 May 17 00:23 recodif_80_06.jpg
 84 -rw-r--r--  1 goffredo  users  84703 May 17 00:23 recodif_80_07.jpg
 84 -rw-r--r--  1 goffredo  users  84721 May 17 00:23 recodif_80_08.jpg
 84 -rw-r--r--  1 goffredo  users  84741 May 17 00:23 recodif_80_09.jpg
 84 -rw-r--r--  1 goffredo  users  84734 May 17 00:23 recodif_80_10.jpg
 84 -rw-r--r--  1 goffredo  users  84706 May 17 00:23 recodif_80_11.jpg
 84 -rw-r--r--  1 goffredo  users  84724 May 17 00:23 recodif_80_12.jpg
 84 -rw-r--r--  1 goffredo  users  84724 May 17 00:23 recodif_80_13.jpg
 84 -rw-r--r--  1 goffredo  users  84724 May 17 00:23 recodif_80_14.jpg
 84 -rw-r--r--  1 goffredo  users  84717 May 17 00:23 recodif_80_15.jpg
 84 -rw-r--r--  1 goffredo  users  84734 May 17 00:23 recodif_80_16.jpg
 84 -rw-r--r--  1 goffredo  users  84723 May 17 00:23 recodif_80_17.jpg
 84 -rw-r--r--  1 goffredo  users  84723 May 17 00:23 recodif_80_18.jpg
 84 -rw-r--r--  1 goffredo  users  84731 May 17 00:23 recodif_80_19.jpg
 84 -rw-r--r--  1 goffredo  users  84732 May 17 00:23 recodif_80_20.jpg
 84 -rw-r--r--  1 goffredo  users  84732 May 17 00:23 recodif_80_21.jpg
 84 -rw-r--r--  1 goffredo  users  84732 May 17 00:23 recodif_80_22.jpg
 84 -rw-r--r--  1 goffredo  users  84701 May 17 00:23 recodif_80_23.jpg
 84 -rw-r--r--  1 goffredo  users  84701 May 17 00:23 recodif_80_24.jpg
 84 -rw-r--r--  1 goffredo  users  84701 May 17 00:23 recodif_80_25.jpg
 84 -rw-r--r--  1 goffredo  users  84701 May 17 00:23 recodif_80_26.jpg
 84 -rw-r--r--  1 goffredo  users  84701 May 17 00:23 recodif_80_27.jpg
 84 -rw-r--r--  1 goffredo  users  84701 May 17 00:23 recodif_80_28.jpg
 84 -rw-r--r--  1 goffredo  users  84701 May 17 00:23 recodif_80_29.jpg


Abaixo as assinaturas:

SHA256 (recodif_80_00.jpg) = 0a72967477c3fc085fc863717775afed6d9e828ddc0944adf35cc341bf8f5663
SHA256 (recodif_80_15.jpg) = 0d4e7b88f1457157e6ea589f03e45ac4482c3875d1e64333501be1f847bb2728
SHA256 (recodif_80_06.jpg) = 233833cadb26c07162d681aa01a42ef4c303ef5637d1893e97a7d2324007939f
SHA256 (recodif_80_25.jpg) = 323828b29f41db2404909db290f0ee702f8a8f9fb6adf2ba1e355612c8ebbd50
SHA256 (recodif_80_22.jpg) = 32b23e4d6bd1e37e39fc688e9b62e76038dfca6f4b757d342b2a7e781deeb5e9
SHA256 (recodif_80_29.jpg) = 3b80e8139dc94db15b7e2ae96def42598be9803c0333d9e3817dd2f942056659
SHA256 (recodif_80_20.jpg) = 462b88500ad853bfff671545fe7b3d319ed118908675939285748f286e34bf20
SHA256 (recodif_80_18.jpg) = 4b6d7d662586d3ccbaf2ee9b3e323d209c3c835c3e65277bcfc7f8508eee1ffc
SHA256 (recodif_80_08.jpg) = 574fefad5717dbca63cc43d5dcbb9cd3329abf323229f729d55e9174da04b636
SHA256 (recodif_80_14.jpg) = 60cdf1cfe9335d94edcb43102c1177727b78736ab744c556bd8a633135bf48a2
SHA256 (recodif_80_10.jpg) = 634ef9c9b35493ce06c9d0081e1889d31a078abd9df6b12edbbc54c0016da19a
SHA256 (recodif_80_24.jpg) = 63d19bae8de9f57f05724a55f990e1d8ce4ade979ac28890544b2669aad4f7c9
SHA256 (recodif_80_17.jpg) = 7189ae3a3c200cb7d9bb430328fbe1c4d2e87d559c414fa8deb51005b2913a0d
SHA256 (recodif_80_13.jpg) = 7216f8062611f663e3d025b44b27e162f00e7f60358ea71811373d8f71cceb6b
SHA256 (recodif_80_23.jpg) = 79a6ff98bd00428d5a9df5300e5492aea15d44a689891da73476e1e05d097076
SHA256 (recodif_80_21.jpg) = 7b155d8682577e70ab477963a5dc916831f4cacbccdcc4cd85584deba89333d4
SHA256 (recodif_80_28.jpg) = 8f1372d3206ae1aa089f2987e779d544e6c26cd61fe2b592a0cccc716b24eb03
SHA256 (recodif_80_02.jpg) = 939439679216dd89077dceed16f1c32532f1f1c7d294ecd1da917557ebb0532b
SHA256 (recodif_80_04.jpg) = 93f2630b0d0e365b23f29705d1bc57e736da37a8f35db5871fbf60f3a1529f76
SHA256 (recodif_80_05.jpg) = 953e4be318e82d627a889e40ab3edeb04bf1059f1ca75a3b54bf4950d9849cf7
SHA256 (recodif_80_27.jpg) = 9637536436354bb386f29a4a6a112edfc44372e197884760138621d12c76668f
SHA256 (recodif_80_01.jpg) = a5c67ce54fe6cfef485b981c21bd6b881328894ae391d5b2359fc401a32e5238
SHA256 (recodif_80_16.jpg) = aabd88d32e5d9ac51406a0c68859c1ef37304be7a20f5e91d2d7f5ff3255634f
SHA256 (recodif_80_11.jpg) = b0129fc8e1eb6756f21b271405697ff2cd797ab1bd562d1eaf8635a0b862a39b
SHA256 (recodif_80_03.jpg) = b732e18d6bc9ed04d8bd0c3e4d1571c322fdafc90b7a27d050397130ea633796
SHA256 (recodif_80_12.jpg) = d108568f238697567462f7eb42a4493c0c9614b7bba339fd1e752abe2e4481e4
SHA256 (recodif_80_26.jpg) = d83c9c71589510c9c04726b08ddb0209bbaaa24066041ed28118fda9fab9cda6
SHA256 (recodif_80_19.jpg) = e368c1f164215dda1c6b2a3bd36a4e6c58d631e3e0ee288f9c876bccbd5c1f78
SHA256 (recodif_80_09.jpg) = e5a5475caefda871ee04cc9b373a60817bb637c888a05a3f1f3032f704770586
SHA256 (recodif_80_07.jpg) = e794558a3f5b239bf4886c2b287f9f3534aa41ede2b7d8744128396da28a4f56


Abaixo as fotos:

Qualidade 80, primeira imagem da série.

Qualidade 80, trigésima imagem da série.

Uma observação é que muitos dos problemas vistos na qualidade de 40 não são tão facilmente vistos aqui.

Nível 90

O nível de qualidade 90 também não convergiu. Abaixo os tamanhos e as assinaturas:

134 -rw-r--r--  1 goffredo  users  135749 May 17 00:23 recodif_90_00.jpg
134 -rw-r--r--  1 goffredo  users  135808 May 17 00:23 recodif_90_01.jpg
134 -rw-r--r--  1 goffredo  users  135816 May 17 00:23 recodif_90_02.jpg
134 -rw-r--r--  1 goffredo  users  135778 May 17 00:23 recodif_90_03.jpg
134 -rw-r--r--  1 goffredo  users  135776 May 17 00:23 recodif_90_04.jpg
134 -rw-r--r--  1 goffredo  users  135776 May 17 00:23 recodif_90_05.jpg
134 -rw-r--r--  1 goffredo  users  135796 May 17 00:23 recodif_90_06.jpg
134 -rw-r--r--  1 goffredo  users  135767 May 17 00:23 recodif_90_07.jpg
134 -rw-r--r--  1 goffredo  users  135783 May 17 00:23 recodif_90_08.jpg
134 -rw-r--r--  1 goffredo  users  135814 May 17 00:23 recodif_90_09.jpg
134 -rw-r--r--  1 goffredo  users  135786 May 17 00:23 recodif_90_10.jpg
134 -rw-r--r--  1 goffredo  users  135798 May 17 00:23 recodif_90_11.jpg
134 -rw-r--r--  1 goffredo  users  135771 May 17 00:23 recodif_90_12.jpg
134 -rw-r--r--  1 goffredo  users  135783 May 17 00:23 recodif_90_13.jpg
134 -rw-r--r--  1 goffredo  users  135783 May 17 00:23 recodif_90_14.jpg
134 -rw-r--r--  1 goffredo  users  135783 May 17 00:23 recodif_90_15.jpg
134 -rw-r--r--  1 goffredo  users  135783 May 17 00:23 recodif_90_16.jpg
134 -rw-r--r--  1 goffredo  users  135803 May 17 00:23 recodif_90_17.jpg
134 -rw-r--r--  1 goffredo  users  135803 May 17 00:23 recodif_90_18.jpg
134 -rw-r--r--  1 goffredo  users  135759 May 17 00:23 recodif_90_19.jpg
134 -rw-r--r--  1 goffredo  users  135759 May 17 00:23 recodif_90_20.jpg
134 -rw-r--r--  1 goffredo  users  135759 May 17 00:23 recodif_90_21.jpg
134 -rw-r--r--  1 goffredo  users  135759 May 17 00:23 recodif_90_22.jpg
134 -rw-r--r--  1 goffredo  users  135794 May 17 00:23 recodif_90_23.jpg
134 -rw-r--r--  1 goffredo  users  135794 May 17 00:23 recodif_90_24.jpg
134 -rw-r--r--  1 goffredo  users  135788 May 17 00:23 recodif_90_25.jpg
134 -rw-r--r--  1 goffredo  users  135762 May 17 00:23 recodif_90_26.jpg
134 -rw-r--r--  1 goffredo  users  135788 May 17 00:23 recodif_90_27.jpg
134 -rw-r--r--  1 goffredo  users  135784 May 17 00:23 recodif_90_28.jpg
134 -rw-r--r--  1 goffredo  users  135757 May 17 00:23 recodif_90_29.jpg

SHA256 (recodif_90_24.jpg) = 10eef22adb396cea292346ce62131cae96a89b45705be8d8948a9d3a899532d5
SHA256 (recodif_90_23.jpg) = 148f72d883fcc945913b757ab92fb1b4f2226637397c914b2c03cce95a1d2b13
SHA256 (recodif_90_06.jpg) = 25e52c60b6d50a03e0c8a7e000e2be6aa4ef214f244ffd121f0d0e1f81da27c0
SHA256 (recodif_90_01.jpg) = 30f8d92d53d27b0edd8529aae8474075dcccb6f265946e137c322d5d98c64e7c
SHA256 (recodif_90_14.jpg) = 323b30b3267b06c66c4361ef546c2a0ade1ad94ea68bc1a74995d425b3abf6f2
SHA256 (recodif_90_12.jpg) = 35a2902ede1753539526a1554944d7933990bfa83acac3bb46c3caef3b7c35d6
SHA256 (recodif_90_18.jpg) = 38d51b850a631b89dddc8e2a0d122ad7ed2a1386078eba2a9a29fdfa2ef8ac44
SHA256 (recodif_90_29.jpg) = 3df147900849be9a22cb4415d97b8b1056ca7d91dac81bf3aefe508bbfb1844c
SHA256 (recodif_90_22.jpg) = 3f73e86d881df00af5f2fb55ad1b3b29facf6cea43ff547cc5afe31fb97f719f
SHA256 (recodif_90_25.jpg) = 407b048c8bd75386f025399facebdedf59edfad5aa53d3e1576584f1ea796bd1
SHA256 (recodif_90_02.jpg) = 4eeb5cf8a1e5584a37931a938a94bbd1925c74ba738859ddb0e7d31f9e27e5c3
SHA256 (recodif_90_13.jpg) = 51d179ac228e09df9c3763d36655d0e9ba5369a53c4283aeec7c3355c3eb3e40
SHA256 (recodif_90_03.jpg) = 5876b09058bcf15741879a813c8a5d6411de8f65a9c1da4ac8ee05c5c53b9e6b
SHA256 (recodif_90_07.jpg) = 5be027851d4ecb800aa019bd331a9edfd8ba1cdf2b479be718324a88999672ee
SHA256 (recodif_90_09.jpg) = 7af599b64a2632ec98ef70b3d2aa2b9e0e3d74168eeb3b43b228db0458ab490b
SHA256 (recodif_90_28.jpg) = 7e29e5f56ee22b62836e2a57d4d94b73e91b873db78f1802a2ee92aace51e91f
SHA256 (recodif_90_19.jpg) = 869fe80458544d1b597e2efb4445ad0cea5af60fef9357e38139cd70b83964c3
SHA256 (recodif_90_26.jpg) = 9a7be2154b84dc62c33223d714be9d39371e7a339a6c8c6c348bf8c48c6ddeed
SHA256 (recodif_90_00.jpg) = 9b69d6be2db2be956887e240dd7e70d5f36118d7981523572893f6a62c445038
SHA256 (recodif_90_20.jpg) = a3426734c6bb497dfdac3b2ac7704ff10c11d08eddb0051c4bf1dbe14d8a3419
SHA256 (recodif_90_04.jpg) = a9c1dac4d1dea62dc202e3de988ef1cb12060299e11714213c567ab4a888ac0e
SHA256 (recodif_90_21.jpg) = bbe5c8efc3e35953908f72efeea24eeff76c0f3ca9bf8cdd3bf6660a67b74bee
SHA256 (recodif_90_05.jpg) = c58210abeecd6df4a64eeb9e48dce7201c45d5e27c55ae137d9dcc8777c9d44f
SHA256 (recodif_90_10.jpg) = cafb502084accfa444d81dfa182c125294e0aa2f6e9acc1f3b8f13e9061bdd49
SHA256 (recodif_90_16.jpg) = da2105b1ff1891b853dbe211c8e8b76ad72247a934699787760ba32f2c66008b
SHA256 (recodif_90_17.jpg) = e24ef8b85f34b67428ab5a53131dab7642af349fcfcf0b619b241356d41cc3bc
SHA256 (recodif_90_08.jpg) = eaa3dc1cacb3d8d09c2e8613995f65b72501a3db2e72d68c89dabc35f4d9f3fb
SHA256 (recodif_90_11.jpg) = eed7ef97ff4941418402e88cba42869c09ce0d7a49973d5f2dabe5f4582b2f03
SHA256 (recodif_90_15.jpg) = f3779936f388402f64faf95a7a39a251678d103e0143f9b8d26d4cb2ca6bc88e
SHA256 (recodif_90_27.jpg) = f5c965ee19d7c62a2df39cc95abde4c9f4f0dfabe708e49ec56ba509b052689e


Não vou colocar mais as imagens, pois neste ponto em diante não tem muita coisa gritante de diferença visual. (Caso insistam, eu reedito o artigo colocando.)

Nível 95

Este nível de qualidade até que foi divertido. Gostam de jogo de pingue-pongue? Se sim, olhem as assinaturas sha256.

176 -rw-r--r--  1 goffredo  users  178474 May 17 00:23 recodif_95_00.jpg
176 -rw-r--r--  1 goffredo  users  178583 May 17 00:23 recodif_95_01.jpg
176 -rw-r--r--  1 goffredo  users  178569 May 17 00:23 recodif_95_02.jpg
176 -rw-r--r--  1 goffredo  users  178606 May 17 00:23 recodif_95_03.jpg
176 -rw-r--r--  1 goffredo  users  178617 May 17 00:23 recodif_95_04.jpg
176 -rw-r--r--  1 goffredo  users  178611 May 17 00:23 recodif_95_05.jpg
176 -rw-r--r--  1 goffredo  users  178575 May 17 00:23 recodif_95_06.jpg
176 -rw-r--r--  1 goffredo  users  178563 May 17 00:23 recodif_95_07.jpg
176 -rw-r--r--  1 goffredo  users  178603 May 17 00:23 recodif_95_08.jpg
176 -rw-r--r--  1 goffredo  users  178578 May 17 00:23 recodif_95_09.jpg
176 -rw-r--r--  1 goffredo  users  178596 May 17 00:23 recodif_95_10.jpg
176 -rw-r--r--  1 goffredo  users  178596 May 17 00:23 recodif_95_11.jpg
176 -rw-r--r--  1 goffredo  users  178600 May 17 00:23 recodif_95_12.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_13.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_14.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_15.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_16.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_17.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_18.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_19.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_20.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_21.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_22.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_23.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_24.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_25.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_26.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_27.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_28.jpg
176 -rw-r--r--  1 goffredo  users  178546 May 17 00:23 recodif_95_29.jpg

SHA256 (recodif_95_04.jpg) = 03db0a640ef0b243845c125a4a97d8bd082d79bc57e555803fc6dcd0c10dc4b7
SHA256 (recodif_95_06.jpg) = 0fa09311435c42c4ee2cf1ece526bd7e0cdd376476cd00a8dc2c769839fe7725
SHA256 (recodif_95_07.jpg) = 119c7bb2f34262e44e87a691f5f3c420e7d763315d654413a54f5349ccd80d17
SHA256 (recodif_95_10.jpg) = 121a21cb020d1c81bbb194646f78b846de51a0a3bc8470ea7ac22db38155ed85
SHA256 (recodif_95_13.jpg) = 20506be2a570f318f924647950016ea659187cc989660434af790701b7a3b2d4
SHA256 (recodif_95_08.jpg) = 214f95923022be7e9967f3e110dbe95fd34be288bc2182fc5d4b53b3a938e5e9
SHA256 (recodif_95_03.jpg) = 23c8511e56726f2136a086cf583848437f8e44efe2aaa8f9912c77a781b61504
SHA256 (recodif_95_00.jpg) = 2ad84e08e35b71b4062c0260b56550f504818c07b6c3c5a752c8ca68e0d0aaad
SHA256 (recodif_95_02.jpg) = 44365307756393f51e40a4d187316d05f4eeee89f84d2d33d8ad4b55462e8e52
SHA256 (recodif_95_11.jpg) = 48f2655c1cf9017cb020a02f7018585b5bd91c820283ca32303aeae3ee10e631
SHA256 (recodif_95_09.jpg) = 633a8a297b49d35784034334b596f19af4d60251721a7238aea8f0cca9717d69
SHA256 (recodif_95_12.jpg) = 7c0aebc62346bc672a64fabcc3b99a0675f0a0512eb6eddb5200a4b412f9efbd
SHA256 (recodif_95_14.jpg) = 924388086764ca9cfd1cd6dac60b2746bb7ae632e096af4f8acc15bb26f1a165
SHA256 (recodif_95_16.jpg) = 924388086764ca9cfd1cd6dac60b2746bb7ae632e096af4f8acc15bb26f1a165
SHA256 (recodif_95_18.jpg) = 924388086764ca9cfd1cd6dac60b2746bb7ae632e096af4f8acc15bb26f1a165
SHA256 (recodif_95_20.jpg) = 924388086764ca9cfd1cd6dac60b2746bb7ae632e096af4f8acc15bb26f1a165
SHA256 (recodif_95_22.jpg) = 924388086764ca9cfd1cd6dac60b2746bb7ae632e096af4f8acc15bb26f1a165
SHA256 (recodif_95_24.jpg) = 924388086764ca9cfd1cd6dac60b2746bb7ae632e096af4f8acc15bb26f1a165
SHA256 (recodif_95_26.jpg) = 924388086764ca9cfd1cd6dac60b2746bb7ae632e096af4f8acc15bb26f1a165
SHA256 (recodif_95_28.jpg) = 924388086764ca9cfd1cd6dac60b2746bb7ae632e096af4f8acc15bb26f1a165
SHA256 (recodif_95_05.jpg) = ad41fc26037a8025003125292a903cf37d3a5b0d9f0a9300835bfc938559e197
SHA256 (recodif_95_01.jpg) = adf040574773af99ab05908c5be015ecd1e7184f5bd2c703709db44e88935640
SHA256 (recodif_95_15.jpg) = b746a4096b8a43529786be8320c4d4c6c90288cf20b0a3e0c91560e4af4d7daa
SHA256 (recodif_95_17.jpg) = b746a4096b8a43529786be8320c4d4c6c90288cf20b0a3e0c91560e4af4d7daa
SHA256 (recodif_95_19.jpg) = b746a4096b8a43529786be8320c4d4c6c90288cf20b0a3e0c91560e4af4d7daa
SHA256 (recodif_95_21.jpg) = b746a4096b8a43529786be8320c4d4c6c90288cf20b0a3e0c91560e4af4d7daa
SHA256 (recodif_95_23.jpg) = b746a4096b8a43529786be8320c4d4c6c90288cf20b0a3e0c91560e4af4d7daa
SHA256 (recodif_95_25.jpg) = b746a4096b8a43529786be8320c4d4c6c90288cf20b0a3e0c91560e4af4d7daa
SHA256 (recodif_95_27.jpg) = b746a4096b8a43529786be8320c4d4c6c90288cf20b0a3e0c91560e4af4d7daa
SHA256 (recodif_95_29.jpg) = b746a4096b8a43529786be8320c4d4c6c90288cf20b0a3e0c91560e4af4d7daa


Sim, depois de um ponto ficou alternando entre duas imagens diferentes.

Nível 98

Aqui, em teoria, o nível de qualidade seria bem alto.

256 -rw-r--r--  1 goffredo  users  233844 May 17 00:23 recodif_98_00.jpg
256 -rw-r--r--  1 goffredo  users  234274 May 17 00:23 recodif_98_01.jpg
256 -rw-r--r--  1 goffredo  users  234345 May 17 00:23 recodif_98_02.jpg
256 -rw-r--r--  1 goffredo  users  234459 May 17 00:23 recodif_98_03.jpg
256 -rw-r--r--  1 goffredo  users  234442 May 17 00:23 recodif_98_04.jpg
256 -rw-r--r--  1 goffredo  users  234406 May 17 00:23 recodif_98_05.jpg
256 -rw-r--r--  1 goffredo  users  234617 May 17 00:23 recodif_98_06.jpg
256 -rw-r--r--  1 goffredo  users  234460 May 17 00:23 recodif_98_07.jpg
256 -rw-r--r--  1 goffredo  users  234503 May 17 00:23 recodif_98_08.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_09.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_10.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_11.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_12.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_13.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_14.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_15.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_16.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_17.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_18.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_19.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_20.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_21.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_22.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_23.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_24.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_25.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_26.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_27.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_28.jpg
256 -rw-r--r--  1 goffredo  users  234417 May 17 00:23 recodif_98_29.jpg

SHA256 (recodif_98_06.jpg) = 1920337ce88ef166c9a558715aaec10620159d2ef38f8873b0d450665b1ef503
SHA256 (recodif_98_05.jpg) = 1a82427edab441a4bdae69105260d76642f83319689c080cf70eccf38c8c859c
SHA256 (recodif_98_09.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_10.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_11.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_12.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_13.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_14.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_15.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_16.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_17.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_18.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_19.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_20.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_21.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_22.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_23.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_24.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_25.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_26.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_27.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_28.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_29.jpg) = 1add9124fb35021251424e70b51681ce4218151ad6e64a490c39e04a13309ee2
SHA256 (recodif_98_01.jpg) = 2882f04fcdae1e4d1452f65894eb8aa15b23ff323e24964c20e5f7debbbaff22
SHA256 (recodif_98_04.jpg) = 304f73b5d9b307ebd449710cb91ad9822d1a3a879957ebe28853d464ee7090a8
SHA256 (recodif_98_08.jpg) = 63d28b50db51a44dafdb35cad5a96c050a6ac2a167a0438717fe8d60ecdc01df
SHA256 (recodif_98_02.jpg) = 98dff62a00ac1bdb86594e68121c5508ae181310bdd5ddd298493aa4dd6b89f9
SHA256 (recodif_98_00.jpg) = bc6ed1523eb043bc1f46bea6a243304463c2faddd9ff91f0103cd388ab9b3e1a
SHA256 (recodif_98_03.jpg) = e66d1abc749e4e8783517e5568f99fed1a5f9e39e09c7f94fa408fd6cf4753d3
SHA256 (recodif_98_07.jpg) = e839c416bfba74f9e9e35f260fcde74e3d49b171ebfda685e47a113e649793d6


Aqui convergiu para uma imagem, que não se alterou da nona iteração em diante.

Nível 100

Aqui é máxima qualidade do programa usado. Se espera uma convergência mais cedo, enganou-se.

304 -rw-r--r--  1 goffredo  users  291416 May 17 00:23 recodif_100_00.jpg
320 -rw-r--r--  1 goffredo  users  294924 May 17 00:23 recodif_100_01.jpg
320 -rw-r--r--  1 goffredo  users  296510 May 17 00:23 recodif_100_02.jpg
320 -rw-r--r--  1 goffredo  users  297242 May 17 00:23 recodif_100_03.jpg
320 -rw-r--r--  1 goffredo  users  297475 May 17 00:23 recodif_100_04.jpg
320 -rw-r--r--  1 goffredo  users  297681 May 17 00:23 recodif_100_05.jpg
320 -rw-r--r--  1 goffredo  users  297754 May 17 00:23 recodif_100_06.jpg
320 -rw-r--r--  1 goffredo  users  297652 May 17 00:23 recodif_100_07.jpg
320 -rw-r--r--  1 goffredo  users  297673 May 17 00:23 recodif_100_08.jpg
320 -rw-r--r--  1 goffredo  users  297779 May 17 00:23 recodif_100_09.jpg
320 -rw-r--r--  1 goffredo  users  297784 May 17 00:23 recodif_100_10.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_11.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_12.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_13.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_14.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_15.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_16.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_17.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_18.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_19.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_20.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_21.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_22.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_23.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_24.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_25.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_26.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_27.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_28.jpg
320 -rw-r--r--  1 goffredo  users  297796 May 17 00:23 recodif_100_29.jpg

SHA256 (recodif_100_11.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_12.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_13.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_14.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_15.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_16.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_17.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_18.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_19.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_20.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_21.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_22.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_23.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_24.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_25.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_26.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_27.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_28.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_29.jpg) = 183a15a3aa48c0fe2368a7f6b2a9f78c1b31a4e6bbdf7e2e081daf9509828715
SHA256 (recodif_100_02.jpg) = 33e9360de14bdca126793d058123e9e5d8f61a14f12c7bf7988908283e385fea
SHA256 (recodif_100_10.jpg) = 48d1dc237724ee91596e1fdfce5b4ba013fac7105922326770dc642c9e829b07
SHA256 (recodif_100_01.jpg) = 539f4fefb6909735bf59a813d545c7609fbd2c9cb84f785229b3e1209be36871
SHA256 (recodif_100_05.jpg) = 5e5fad9a8d974111f43f12dee5a6de3535fd1427d1e2b0737ad94ecfea47f4bb
SHA256 (recodif_100_03.jpg) = 77f99f435e7a06816f9f3bff878e7044aebb3be9fe18d5fc72317fca0161beb3
SHA256 (recodif_100_00.jpg) = 89d931f3bbcc259cb9f3aa0a8344a804bef979c86cac0542ca1bdd25d6556cab
SHA256 (recodif_100_07.jpg) = 9326b68bd58f0735839ce0b4503398895a3803e64844ebfdf173bdd51c9ce519
SHA256 (recodif_100_08.jpg) = 95e84a63a8764313d91459a48d7a7219d10472bc75c55be3b974c747fba49d9c
SHA256 (recodif_100_06.jpg) = cd0d30cba92f9f56e507b91e69ff10d0763cf171076ec2ca83919cfb1e114aab
SHA256 (recodif_100_04.jpg) = ee0b518c08d7fb7c7712d057e66b8107288035469dff4d8bc57f1e24aed2e3df
SHA256 (recodif_100_09.jpg) = f88260198c7bfbfd375074c37e9dc0d079d51a8f2d76d0a2bb8d2aebd6d050cf


O formato final, a convergência, foi atingida na décima primeira iteração, e não na nona ou antes, como no nível 98 de qualidade. Isto ainda não quer dizer que esta imagem em nível 100 seja pior do que ela em nível 98.

Analizando acúmulo de modificações no nível 100

Mais uma brincadeira. Converti a imagem inicial, DSC_6173.JPG, em pnm, o formato nativo de trabalho do netpbm (na realidade, isto tinha acontecido num teste para um artigo anterior), fiz o mesmo com a primeira e a última imagens da série de nível 100, e pedi o histograma das diferenças em relação à imagem original.

goffredo:GoffredoNB2[673] jpegtopnm < recodif_100_00.jpg > recodif_100_00.pnm
jpegtopnm: WRITING PPM FILE
goffredo:GoffredoNB2[674] jpegtopnm < recodif_100_29.jpg > recodif_100_29.pnm
jpegtopnm: WRITING PPM FILE
goffredo:GoffredoNB2[675] pamarith -difference pam_inicial.pnm recodif_100_00.pnm  | ppmhist -nomap
   r     g     b         lum     count 
 ----- ----- -----      -----   -------
     0     0     0          0    452482
     1     1     1          1     23459
     1     1     0          1      6510
     0     0     2          0      3866
     2     1     0          1      3854
     1     0     0          0      2346
     0     1     2          1      2098
     2     0     0          1      1504
     0     0     1          0      1077
     0     1     1          1       760
     0     2     1          1       201
     2     0     1          1       182
     1     2     1          2       173
     1     1     2          1       165
     3     0     1          1       126
     2     1     1          1       113
     1     1     3          1       109
     2     1     2          1        96
     1     0     2          1        71
     1     0     3          1        53
     3     1     1          2        40
     2     0     2          1        37
     1     0     1          0        19
     1     2     0          1        19
     1     2     2          2         9
     2     2     2          2         7
     0     1     0          1         6
     0     1     3          1         3
     3     0     3          1         2
     2     0     3          1         2
     1     2     3          2         1
     0     2     0          1         1
     3     1     0          1         1
goffredo:GoffredoNB2[676] pamarith -difference pam_inicial.pnm recodif_100_29.pnm | ppmhist -nomap
   r     g     b         lum     count 
 ----- ----- -----      -----   -------
     0     0     0          0    431043
     1     1     1          1     42365
     1     1     0          1      6967
     2     1     0          1      4155
     0     0     2          0      3937
     1     0     0          0      2439
     0     1     2          1      2171
     2     0     0          1      1594
     0     0     1          0      1104
     0     1     1          1       858
     0     2     1          1       413
     2     0     1          1       368
     1     2     1          2       321
     3     0     1          1       253
     1     1     3          1       231
     2     2     2          2       216
     1     1     2          1       215
     2     1     1          1       189
     2     1     2          1       113
     1     0     2          1       111
     1     0     3          1        93
     3     1     1          2        80
     2     0     2          1        47
     1     2     0          1        31
     1     0     1          0        22
     1     2     2          2        12
     0     1     0          1         5
     3     0     3          1         4
     0     1     3          1         4
     0     2     0          1         4
     1     2     3          2         3
     0     3     3          2         3
     0     3     2          2         3
     2     0     3          1         3
     3     1     0          1         2
     0     3     4          2         1
     2     1     4          2         1
     3     1     2          2         1
     3     2     2          2         1
     2     3     1          2         1
     2     2     4          2         1
     4     1     2          2         1
     2     3     0          2         1
     0     4     4          3         1
     1     3     2          2         1
     2     1     3          2         1
     0     3     1          2         1
     2     2     0          2         1


Só uma olhada rápida já diz que tem muita diferença entre a primeira e a última de série. Imagine se baixar a qualidade? Dá medo em pensar, não? Mas se alguém quiser ver, faça por usa conta e risco. Um teste rápido com o nível 80 de qualidade deu 7298 linhas no histograma (excluindo as duas de cabeçalho) de diferenças para a primeira imagem, e 7341 para última imagem, chegando a ter diferença na luminância (quarta coluna) de 30 para primeira, e 39 para última, em relação à imagem original.

Conclusão

(Esta parte tem que ler, mesmo que não tenha lido nada acima.)

Esta trabalheira toda foi fara dizer que o JPEG não tem confiabilidade especialmente quanto à repetitividade, que a cada vez que ler e gravar pode dar um resultado diferente, portanto não deve ser encarado como confiável. Os resultados variam muito de caso para caso, qualidade etc. Mas isto não diz que ele é inútil. Ele é ótimo para gerar imagens pequenas quando a perfeição não é fundamental, e menores ainda quando não se precisa de muita qualidade.

Ambiente de teste

(Leitura opcional, só para quem se interessar em reproduzir a experiência.)

As experiências foram conduzidas no meu notebook, rodando FreeBSD 8.2, usando o pacote netpbm, compilado à partir dos ports tree. Detalhes podem ser vistos abaixo:

goffredo:GoffredoNB2[490] pkg_info | grep -i netpbm
netpbm-10.35.80_3   A toolkit for conversion of images between different format
goffredo:GoffredoNB2[491] uname -a
FreeBSD GoffredoNB2 8.2-STABLE FreeBSD 8.2-STABLE #9: Tue Jan 31 20:49:06 BRST 2012     root@:/usr/obj/usr/src/sys/NOTEBOOK2  amd64
goffredo:GoffredoNB2[492]


O script abaixo automatizou todo o processo de conversão e coleta das assinaturas.

#!/bin/sh

rm ls_sha256.txt

for i in 40 60 80 90 95 98 100
do

        ./JPEG_de_JPEG.sh $i

        echo                                    >> ls_sha256.txt
        echo    Nivel "$i":                     >> ls_sha256.txt
        echo                                    >> ls_sha256.txt

        ls -ls  recodif_"$i"_*                  >> ls_sha256.txt

        echo                                    >> ls_sha256.txt

        sha256 recodif_"$i"_* | sort -k 4       >> ls_sha256.txt

        echo                                    >> ls_sha256.txt
done

echo                                    >> ls_sha256.txt

ls -lsrt recodif_*_00.jpg recodif_*_29.jpg DSC_6173.JPG         >> ls_sha256.txt

echo                                    >> ls_sha256.txt


Alguns comandos foram dados à mão, sendo que alguns foram copiados juntos, no copiar-e-colar, e outros não.

Nenhum comentário:

Postar um comentário