Estou tentando criar um pano que, do ponto de vista de uma câmera, seja muito difícil de compactar com JPG, resultando em arquivos de tamanho grande (ou levando a uma baixa qualidade de imagem se o tamanho do arquivo for fixo).
Ele deve funcionar mesmo que o pano esteja longe da câmera ou seja girado (digamos que a escala possa variar de 1x a 10x).
O ruído é bastante bom (difícil de compactar), mas fica cinza ao olhar de longe, tornando-se fácil de compactar. Um bom padrão seria uma espécie de fractal , parecido em todas as escalas.
A folhagem é melhor (folhas, galhos minúsculos, galhos pequenos, galhos grandes), mas usa poucas cores.
Aqui está uma primeira tentativa:
Estou certo de que existem padrões mais ótimos.
Talvez as pavimentações em hexágono ou triângulo tenham um desempenho melhor.
O JPG usa o espaço de cores Y ′ Cb Cr , acho que o Cb Cr pode ser gerado de maneira semelhante, mas acho que é melhor não usar uniformemente todo o escopo de Y '(brilho), pois a câmera saturará as áreas claras ou escuras ( a iluminação nunca é perfeita).
PERGUNTA: Qual é o padrão ideal de pano para esse problema?
fonte
Respostas:
Bem, há ruído fractal . Eu acho que o ruído browniano é fractal, parecendo o mesmo que você aumenta o zoom. A Wikipedia fala sobre adicionar o ruído Perlin a si mesmo em diferentes escalas para produzir ruído fractal, que talvez seja idêntico, não tenho certeza:
Eu não acho que isso seria difícil de comprimir, no entanto. O ruído é difícil para a compactação sem perdas, mas o JPEG é com perdas, por isso apenas descartará os detalhes, em vez de lutar com ele. Não tenho certeza se é possível tornar algo "difícil para o JPEG compactar", pois ele ignora qualquer coisa que é muito difícil de compactar nesse nível de qualidade.
Algo com arestas duras em qualquer escala provavelmente seria melhor, como o plano infinito de xadrez:
Também algo com muitas cores. Talvez veja os fractais reais em vez do ruído fractal. Talvez um fractal Mondriano ? :)
fonte
Se falássemos de imagens geradas por computador, o ruído seria a abordagem correta. Mas aqui, há a etapa de captura da câmera.
O bit fractal é muito importante devido ao problema de invariância da escala. No entanto, não precisa ser verdadeiramente fractal, se você considerar que há uma distância limitada na qual a pessoa será fotografada. Quero dizer, se a pessoa que usa o pano estiver no fundo de uma foto, de qualquer forma, não terá muito impacto ...
Eu acho que a melhor maneira de enganar o codificador JPEG seria ter blocos com coeficientes de alta frequência muito altos que sobreviverão à quantização = muitos detalhes e bordas nítidas; portanto, toda a sequência do coeficiente deve ser escrita explicitamente (em vez de um EOB no 15º coeficiente). O padrão quadriculado é uma boa maneira de conseguir isso. A única desvantagem que vejo é que a baixa resolução da lente + os filtros antialiasing da câmera têm uma boa chance de desfocar isso! Tudo deve acontecer em blocos de 8x8 (ou 16x16 em cromatografia) porque o JPEG não faz muito na escala macro. Você precisa tornar seus blocos de 8x8 o mais confusos possível, não importa o quão embaçada a lente os torne.
Aqui está uma sugestão:
Você pode se perguntar o que os blocos menos contrastados estão fazendo aqui, mas eles ajudam a manter a zona contrastada quando a coisa é reduzida. O desafio aqui é ter algo com um padrão contrastado, independentemente da escala de visualização.
Não avaliei formalmente isso. A melhor maneira seria ter um script que capture a imagem, aplique uma dúzia de recortar / redimensionar / desfoque com vários parâmetros e cuspa o tamanho total dos JPEGs.
fonte
Há uma diferença entre o JPEG explorável e o Transform Compressible.
Veja o ruído branco granulado do aparelho de TV, por exemplo.
Um ruído branco geral é espalhado ao máximo na frequência e, portanto, não há exemplo melhor do que o ruído branco que qualquer técnica de codificação de domínio de transformação não pode comprimir. Se você tomar esse ruído e usar o DCT (ou DFT, se necessário), descobriremos que o domínio da frequência também é amplo e todos os coeficientes terão importância.
No entanto, ainda ninguém o impede de ser agressivo com a quantização. Dessa forma, você ainda pode descartar quantidades pesadas das regiões de alta frequência. O resultado terá um forte erro médio quadrado. No entanto, perceptivamente, ainda seria ruído. Pode estar muito embaçado.
Por outro lado, agora tire fotos onde houver bordas nítidas.
As arestas vivas também terão se espalhado na frequência mais alta (mas pode ser que seja apenas um pouco menos que no caso anterior). No entanto, ao tentar comprimir e diminuir a alta frequência, agora haverá severos impedimentos visualmente. Isso introduzirá o embaçamento das bordas, o efeito de toque, etc. Embora a largura de banda espalhada para essas imagens não seja a mais alta possível, para JPEG ou qualquer compactação equivalente, é difícil manter essas imagens com qualidade perceptualmente igual.
Para qualquer compressão com perdas, resistente e simples depende de quanto e que tipo de distorção é tolerada.
fonte
A composição abaixo mostra uma estrutura do tipo fractal do padrão. Todas as próximas imagens são o resultado da média de cada bloco de 2x2 pixels da anterior. O caráter total do padrão permanece o mesmo, mas o contraste da imagem está diminuindo gradualmente. Como foi dito anteriormente, a imagem fica cinza quando diminuímos o zoom.
Mas, usando a propriedade fractal, poderíamos sobrepor vários padrões de resolução diferente para manter o contraste da imagem estável dentro do intervalo desejado. Abaixo está o exemplo do padrão de 4 camadas (512x512 GIF). Este resultado é mais próximo do ruído browniano e também dificilmente compactável em JPEG.
fonte
Meu palpite é que o pior padrão compressível seria o ruído branco (com distribuição uniforme). Ele precisa parecer barulhento em diferentes resoluções, para que você possa criar as imagens barulhentas no espaço de escala e depois montá-las:
Aqui é a imagem final pano, é a imagem cheia de ruído branco (diferente para cada ) e é Kernel gaussiano de tamanho . O denota convolução.N i i G i i σ ∗I Ni i Gi iσ ∗
Talvez uma maneira melhor de construir essa imagem fosse trabalhar diretamente no domínio da frequência, assim:
O resultado seria o pior padrão compressível para JPEG, pois possui maior entropia no domínio DCT. Mas não tenho certeza de como isso se comportará sob diferentes resoluções.
fonte
IIRC, o algoritmo de descompressão JPEG é especificado; no entanto, o algoritmo de compactação exato não é. Algoritmos diferentes podem produzir um arquivo JPEG legal. Portanto, você precisará testar isso no (s) compressor (s) de imagem escolhido (s).
Qualquer coisa pode ser compactada na mesma quantidade por um compressor com perdas, como JPEG. É que, em qualquer nível fixo de compactação, a qualidade da compactação pode variar (o ruído ou o erro no resultado descompactado aumentará) dependendo da imagem. Então você quer algo que adicione uma quantidade máxima de ruído ao resultado descomprimido. Para isso, você deseja o erro máximo para remover os coeficientes de macroblocos de alta frequência e quantificar quaisquer coeficientes.
O que provavelmente significa piquetes variados e de alta frequência, bem como escalas de cinza e cores variadas que estão entre os possíveis níveis de quantização de um determinado compressor em um determinado cenário.
Como você deseja que isso funcione a qualquer distância em qualquer iluminação, será necessário variar a frequência dos piquetes (talvez fractal, ou talvez apenas aumentada com modulação aleatória de frequência) e os níveis de cor e cinza (de maneira não coerente, por exemplo, variar o cores e níveis independentemente). A variação de matizes dependerá menos da distância, portanto, essas precisam ser escolhidas apenas para pior caso para o (s) quantizador (s) selecionado (s). O tamanho médio dos padrões de cores pode ser o dobro do tamanho dos padrões de luminância para corresponder à composição do macrobloco YUV 4: 1: 1 (área).
Eu começaria com um monte de padrões Moiré altamente coloridos em escalas muito variadas, sobrepostas e / ou remendadas fracamente.
fonte
Deixe-me compartilhar o padrão que tem um espectro muito plano (como o ruído branco). Portanto, esse padrão é muito difícil de compactar com JPG. A imagem de amostra abaixo é ampliada 4 vezes.
O padrão em si é regular, mas não periódico, e pode ser facilmente gerado pelo algoritmo determinístico. Ele também possui uma propriedade fractal.
Visto de longe:
fonte
O ruído aleatório realmente comprime muito mal. Você pode produzi-lo em cores gerando valores independentes de R, G, B.
Olhar à distância realmente eliminará o ruído (através da filtragem passa-baixo), e você poderá evitar isso gerando imagens de ruído em diferentes resoluções, ou seja, usando pixels cada vez maiores e superpondo-as.
Ao adicionar as imagens, você enfrenta o problema da faixa de valores, que cresce conforme o número de imagens, deixe N. Se você apenas calculá-las, a amplitude do ruído diminuirá como 1 / N.
Se você escolher ruído uniforme não correlacionado, a superposição resultará em uma distribuição quase-Gaussiana com desvio padrão de √N; portanto, em vez de dividir por N, você poderá dividir por √N (com re-centralização adequada) para limitar a redução de amplitude.
Por fim, acho que é melhor deixar os valores envolverem, em vez de saturá-los, pois valores saturados formarão grandes áreas uniformes.
fonte
Aqui está outra abordagem que gera ruído Browniano RGB (4096x4096 GIF).
fonte
Pergunta incrível! Em conceito, o ruído branco é um sinal que não muda quando o tempo é escalado. Da mesma forma, um fractal não muda quando é dimensionado. Um processo de compactação com perdas leva apenas o mais importante do espectro (tempo ou tamanho), não todos, então o fractal e o ruído cheiram a cookies. Portanto, você deve brincar com as cores e os padrões do seu tecido. Eles devem ser fractais e o comportamento do fractal deve ser branco gerado aleatoriamente. Você deve obter um tecido que na foto pareça preto (no espaço de cores CMY), mas no mundo real, ele tem um padrão colorido.
Boa sorte! , e se você receber a resposta, poste-a !!!.
fonte