Como encontrar a mudança de canal de cor de uma imagem RGB que deveria ter escala de cinza?


9

Estou usando um dispositivo de gravação que parece mudar as cores horizontalmente e gostaria de encontrar a quantidade de deslocamentos que tenho que fazer em 2/3 dos canais para obter uma imagem com mínima distorção de cor.

imagem capturada

Você pode ver aqui que, na imagem original, pelo menos o canal azul foi deslocado para trás com ~ 1,0 pixel.

insira a descrição da imagem aqui

A questão é como posso detectar os melhores valores de desvio, tenho certeza de que eles não são números inteiros.


Qual dessas imagens são as imagens gravadas no seu dispositivo?

Respostas:


4

Parece que, conceitualmente, você está quase lá:

  • Tome um dos três canais de cores como referência (por exemplo: vermelho)
  • Combine o verde com o vermelho
  • Combine o azul com o vermelho

O problema, então, é a correspondência com a precisão do sub-pixel. Obter números completos significativos é um pouco complicado, uma vez que os erros de interpolação que qualquer método causará afetam a precisão.

Existem dois métodos úteis de registro de imagens em que posso pensar:

  1. Registro de imagem de Lucas-Kanade . O uso da interpolação linear pode não fornecer resultados precisos o suficiente, então considere os métodos bicúbicos ou outros. Neil Dodgson fez uma ótima visão geral. É importante que diferentes desvios de sub-pixel do kernel de interpolação tenham uma transferência de frequência semelhante. Para a família cúbica, o b-spline aproximado é muito melhor que o cattmull-rom, neste caso.

  2. Primeiro aprimore a imagem e, em seguida, faça o registro de imagens com precisão de pixels usando sua técnica favorita. (a correlação cruzada no domínio Fourier deve funcionar). Isso só funciona se o upscaling for feito com cuidado. Provavelmente, bilinear ou bicúbico não fornecerão precisão suficiente. Eu posso pensar em três maneiras:

uma. Interpolação de ienes . Veja a equação 11 de seu artigo. Muito lento, mas ideal. Embora você pareça ter algum apelido no sinal, a suposição 'bandlimited' que o Yen faz pode não se manter.

b. Calcule FFT da imagem, zero pad as altas frequências, inversa FFT.

c. Escalonamento não linear. Como as bordas são bastante nítidas, a imagem não é adequadamente ilimitada por banda, que pode ser a principal limitação dos métodos anteriores. A interpolação direcional dependente da borda pode ser melhor nesse caso.

Depois de ter a conversão de sub-pixel entre os dois, a correção para o canal verde e azul já está resolvida, independentemente do método escolhido.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.