Você está na página 1de 8

COMUNICAÇÃO DE IMAGEM

Laboratório sobre Telecópia

Fernando Pereira

O objectivo da sessão de laboratório a que este texto se refere é familiarizar os alunos com os

principais aspectos de uma transmissão de telecópia. Para isso usar-se-á a aplicação “Comunicação de Imagem” 1 que inclui, entre outros, um módulo com um sistema de telecópia.

O texto está organizado em três partes correspondentes aos três blocos principais do sistema de

telecópia disponível (ver figura):

Codificador de imagens de telecópia

Transmissão e corrupção no canal dos bits de código

Descodificador dos bits de código

Imagem original Visualizar
Imagem original
Visualizar
 

Codificador

Introdução de erros de transmissão

Descodificador

 
  Codificador Introdução de erros de transmissão Descodificador  
  Codificador Introdução de erros de transmissão Descodificador  
de erros de transmissão Descodificador   Bits de código sem erros Bits de código com erros
de erros de transmissão Descodificador   Bits de código sem erros Bits de código com erros

Bits de código sem erros

Bits de código com erros

Figura 1- Sistema de Telecópia

1. CODIFICADOR DE TELECÓPIA

Imagem descodifica Visualizar
Imagem descodifica
Visualizar

Este primeiro bloco simula o funcionamento de um codificador de telecópia do grupo 3 ou do grupo 4.

1.1 Select Image

Este botão permite escolher a imagem a codificar de entre as 8 imagens de teste do CCITT (agora ITU-T). As imagens incluem cartas, esquemas electrónicos, folhas de contabilidade, páginas de livros, etc, apresentando diferentes características estatísticas em termos da informação “preta” e “branca”.

1 A aplicação “Comunicação de Imagem” foi desenvolvida pelo aluno Pedro Fernandes no contexto do seu Trabalho Final de Curso. Aqui ficam desde já os meus agradecimentos pelas possibilidades que esta aplicação abriu para os laboratórios da disciplina de “Comunicação de Imagem”.

Ao seleccionar uma imagem no directório “FAX”, esta ser-lhe-á apresentada no écran, podendo então controlar com o rato a dimensão da janela de visualização, fazer “zoom in” e “zoom out” sobre uma dada zona da imagem utilizando os botões esquerdo e direito do rato e controlar a posição da zona visualizada usando os cursores laterais na janela de visualização.

1.2 Properties

Este botão permite escolher o modo de codificação para a imagem anteriormente seleccionada ou para aquela que já estava seleccionada. A imagem seleccionada encontra-se sempre indicada na janela de diálogo correspondente ao codificador.

Os modos de codificação disponíveis são:

1) GRUPO 3 (modo obrigatório) - Método de Huffman Modificado (MHM) - Este método não tira proveito da correlação (vertical) entre as linhas, usando apenas codificação unidimensional (ao longo das linhas). Cada linha termina com um End Of Line (EOL) e o End Of Page (EOP) é indicado com 6 EOLs.

2) GRUPO 3 com extensões

2.1) Método de READ Modificado - O Método de READ Modificado usa codificação bidimensional ou seja explora a correlação entre as várias linhas. Para que se possa controlar a propagação dos erros de transmissão, este método codifica periodicamente linhas em modo unidimensional ou seja com o Método de Huffman Modificado. Neste caso será pedido ao utilizador que introduza o valor pretendido para o parâmetro que determina esta periodicidade (k). Normalmente, na extensão do grupo 3, tem-se k= 2 para baixa resolução (3.85 linha/mm) e k= 4 para alta resolução (7.7 linha/mm). Cada linha terminará com um EOL, seguido de um bit de etiqueta: “1” se a próxima linha for codificada unidimensionalmente, “0” no caso contrário.

2.2.) Método de READ Modificado-Modificado - O Método de READ Modificado- Modificado é semelhante ao Método de READ Modificado com a excepção de que não se enviam EOLs, nem bits de etiqueta (a codificação é sempre bidimensional). O EOP consiste em 6 EOLs com o bit de etiqueta a “1”.

3) GRUPO 4 - Método de READ Modificado-Modificado - O método de codificação do grupo 4 é sempre o Método de READ Modificado-Modificado já que se supõe não haver necessidade de “pensar nos erros” já que este problema é resolvido noutra parte do sistema (por exemplo nos níveis inferiores do Modelo OSI). O EOP consiste em 2 EOL (sem bits de etiqueta).

1.3 Code Image

Este botão vai efectuar a codificação da imagem seleccionada com o método de codificação escolhido, sendo antes necessário introduzir o nome do ficheiro onde vão ser guardados os bits de código. O programa sugere sempre um nome que corresponde ao nome da imagem escolhida, acrescentando-lhe automaticamente uma extensão que indica o método de codificação usado (“3h” para o grupo 3 básico, “3r” para o grupo 3 na extensão READ Modificado, “3m” para o grupo 3 na extensão READ Modificado-Modificado e “4m” para o grupo 4).

Durante a codificação são apresentados no écran dois gráficos mostrando a evolução do factor de compressão local (últimas 8 linhas codificadas) e do factor de compressão global (todas as linhas da imagem codificadas até à linha actual).

1.4

Statistics

Após

a

codificação,

nomeadamente:

o

botão

Statistics

permite

obter

uma

Para cada tom (preto ou branco):

série

de

dados

estatísticos,

i) Total de amostras com um dado tom.

ii) Total de bits correspondentes às palavras usadas para codificar as amostras com um dado tom.

iii) Factor de compressão para a codificação das amostras com um dado tom (cociente entre os dois valores anteriores).

iv) Média dos comprimentos totais para um dado tom (sem considerar a divisão dos comprimentos em palavras de zona - múltiplos de 64 - e palavras terminais) e média de comprimentos parciais (considerando agora a divisão anterior).

v) Número de amostras (pixels) codificadas com palavras terminais e com palavras de zona do Método de Huffman Modificado. Estas amostras correspondem a codificação unidimensional ou a codificação bidimensional no modo horizontal.

vi) Número de símbolos terminais e de zona correspondentes às amostras referidas em v).

vii) Número de amostras codificadas com o modo vertical e com o modo de passagem quando se usa codificação bidimensional.

viii) Número de símbolos correspondentes às amostras acima referidas em vii).

Para a imagem total:

i) Número total de amostras na imagem.

ii) Número total de bits de código (Este total de bits é superior à soma dos totais de bits das

palavras usadas para codificar os tons branco e preto porque antes não se incluíram os bits correspondentes aos EOLs, EOP, palavras indicadoras do modo horizontal, etc.)

iii) Factor de compressão global.

2. CANAL DE TRANSMISSÃO

Este bloco simula a transmissão através de um canal não ideal, através da possibilidade de introdução no fluxo de bits de código de erros de dois tipos: erros uniformes e erros em rajada (burst).

2.1 Select Stream

Este botão permite escolher o ficheiro com bits de código a corromper. Lembre-se que o nome dos ficheiros com os bits de código indica normalmente a imagem original que foi codificada e a sua extensão indica o método de codificação usado.

2.2

Properties

Este botão permite definir o modo como vão ser introduzidos os erros no ficheiro de bits de código seleccionado. O ficheiro seleccionado encontra-se sempre indicado na janela de diálogo correspondente ao canal de transmissão.

Erros Uniformes - deve introduzir-se a probabilidade de que cada bit (independentemente

dos restantes) esteja errado o que conduz a uma distribuição uniforme no tempo dos erros.

Erros de Rajada:

Probabilidade de ocorrência do início de uma rajada de erros - probabilidade de que um dado bit corresponda ao início de uma rajada de erros.

Comprimento mínimo da rajada de erros - comprimento mínimo da sequência de bits afectados pela rajada de erros.

Comprimento máximo da rajada de erros - comprimento máximo da sequência de bits afectados pela rajada de erros.

O programa calcula e apresenta a probabilidade de ocorrência de erros de bit devido às rajadas entendida como a fracção de bits errados (ver nota abaixo).

Erros Finais no Ficheiro com os Bits de Código:

Erros Uniformes - Indica-se através de um sinal se este tipo de erros deve ou não ser introduzido na próxima transmissão através do canal.

Erros de Rajada - Indica-se através de um sinal se este tipo de erros deve ou não ser introduzido na próxima transmissão através do canal

Skip - Indica-se quantas linhas iniciais na imagem deverão ser “saltadas” antes de se começarem a introduzir os erros indicados.

Nota: O programa determina a probabilidade de ocorrência de erros de bit (entendida como a fracção de bits com erro) devido a rajadas de erro com as características indicadas, supondo que:

após o início de uma rajada de erros, não pode começar outra rajada sem que a primeira tenha acabado

para cada bit “dentro da rajada”, a probabilidade de estar errado é de 0.5

Assim, e usando valores exemplificativos, tem-se:

se o comprimento mínimo da rajada for 10 bits e o comprimento máximo 30 bits, então o comprimento médio da rajada é de 20 bits (número médio de bits sob a influência da rajada).

se a probabilidade de, durante essa rajada, um bit estar errado é de 0.5 então, em média, há 10 bits errados por rajada.

se a probabilidade de se dar o início de uma rajada de erros num dado bit for de 0.0001, e como essa rajada terá em média 10 bits errados, então existe uma probabilidade de 0.0001 de se terem 10 bits errados, ou seja, existe uma probabilidade de 0.0001 x 10 = 0.001 de um qualquer bit estar errado devido a uma rajada de erros.

2.3

Transmit Bits

Este botão vai efectuar a introdução de erros, com as características escolhidas, no ficheiro de bits de código seleccionado, sendo antes necessário introduzir o nome do ficheiro onde vão ser guardados os bits de código corrompidos pela transmissão no canal. O programa sugere que se dê ao ficheiro o nome que corresponde ao nome da imagem original escolhida, acrescentando-lhe automaticamente uma extensão que indica o método de codificação usado e o tipo de erros introduzidos (“b” para burst, “u” para uniforme e “a” para all - burst + uniforme).

2.4 Statistics

Após

a

codificação,

nomeadamente:

o

botão

Statistics”

permite

obter

uma

série

de

dados

estatísticos,

i) Número de erros uniformes introduzidos nos bits de código.

ii) Probabilidade de erro de bit correspondente aos erros uniformes (excluem-se os bits correspondentes às rajadas).

iii) Número de rajadas de erro introduzidas.

iv) Comprimento médio de cada rajada de erro introduzida.

v) Número de erros de rajada introduzidos no fluxo de bits.

vi) Probabilidade de erro de bit correspondente aos erros de rajada (em relação ao total de bits).

3. DESCODIFICADOR DE TELECÓPIA

O último bloco do sistema implementado simula o funcionamento de um descodificador de telecópia do grupo 3 ou do grupo 4.

3.1 Select Stream

Este botão permite escolher o ficheiro com os bits de código corrompidos a descodificar. Lembre- se que o nome dos ficheiros com os bits de código indica normalmente a imagem original que foi codificada e a extensão indica o método de codificação usado e o tipo de erros introduzidos.

3.2 Properties

Atendendo a que a descodificação de ficheiros com bits de código errados conduz inevitavelmente a perdas de informação, e logo à degradação da imagem, é importante tentar minimizar o impacto negativo desses erros na imagem descodificada.

A diminuição do impacto subjectivo negativo dos erros depende apenas do descodificador e logo pode ser feita segundo métodos mais ou menos “inteligentes” sem quaisquer problemas de interoperabilidade e logo de normalização. Estes métodos, sendo da exclusiva responsabilidade do receptor, não implicam a transmissão de qualquer informação adicional. Este tipo de processamento é mais importante para o caso da codificação com o método de READ em virtude da maior propagação de erros que o caracteriza.

As opções disponíveis no sistema implementado em termos de métodos de diminuição do impacto subjectivo negativo dos erros na imagem descodificada são quatro:

Print White (PW) - Pôr a branco a linha onde foi detectado o erro, assim como todas as

linhas seguintes, até ser recebida, em boas condições, uma linha codificada unidimensionalmente.

Print Previous Line (PPL) - Pôr a linha onde foi detectado o erro igual à linha anterior,

assim como todas as linhas seguintes, até ser recebida, em boas condições, uma linha codificada

unidimensionalmente.

Print Previous Line/White (PLW) - Pôr a linha onde foi detectado o erro igual à linha

anterior e todas as linhas seguintes a branco até ser recebida, em boas condições, uma linha

codificada unidimensionalmente.

Normal Decode/Previous Line (NDPL) - Descodificar normalmente a linha onde foi

detectado o erro até ao erro e, a partir daí, usar a parte correspondente da linha anterior descodificada. Esta será a linha de referência para a nova linha, prosseguindo-se com o método

normal de descodificação até à descodificação, em boas condições, de uma linha codificada unidimensionalmente.

Antes de proceder à descodificação é assim necessário escolher um dos métodos acima descritos (que obviamente deverá ser o mesmo usado para a codificação). No caso do método de codificação usado ter sido o método de READ-Modificado é pedido o valor de k usado não porque seja essencial para a descodificação mas apenas para verificar se a periodicidade da codificação unidimensional declarada pelo codificador foi respeitada.

Repare-se que qualquer dos métodos acima descritos só permite a recuperação do sincronismo de descodificação quando se receber correctamente uma linha codificada unidimensionalmente (que pode ser logo a seguinte ou não). Para isso é necessário que o fluxo de bits de código inclua palavras de End of Line (EOLs) (telecópia do grupo 3). Assim, não tem sentido o uso destes métodos quando k é infinito (ou seja não há linhas unidimensionalmente codificadas) já que não existe a possibilidade de recuperar o sincronismo antes do fim da imagem. Nestas condições deve-se estar a contar com um outro tipo de método para diminuir o impacto negativo dos erros de transmissão como seja a retransmissão de informação segundo um qualquer protocolo. Neste caso a degradação da imagem é diminuída não através de métodos que tentam minimizar os efeitos negativos da informação perdida devido aos erros mas através da correcção dos próprios erros ficando então a dispor-se da informação correcta.

3.3 Decode Stream

Este botão vai efectuar a descodificação do ficheiro de bits de código seleccionado usando, para a geração da imagem descodificada final, o método de diminuição do impacto subjectivo dos erros escolhido. O programa sugere sempre um nome que corresponde ao nome da imagem original escolhida.

Durante a descodificação são apresentados no écran os erros detectados bem como alguns avisos, nomeadamente:

Erros de Sintaxe - A palavra recebida não existe nas tabelas de código normalizadas

(sintacticamente o fluxo está incorrecto por integrar palavras “impossíveis”). Fica a saber-se, aproximadamente, onde está localizado o erro.

Erros de Semântica - A linha descodificada apresenta mais do que 1728 amostras (folha A4

em resolução normal) o que indica que ocorreu um erro semântico ou seja o fluxo de bits não integra palavras “impossíveis” porque os erros transformaram umas palavras noutras (logo sintacticamente válidas) mas semanticamente (em termos de significado) sabe-se que a soma dos comprimento na linha estão errados. Não há aqui qualquer possibilidade de saber onde está localizado o erro usando

apenas a informação correspondente à linha descodificada. Poderá vir a saber-se alguma coisa “olhando” para a linha anteriormente descodificada.

Aviso - Indica as linhas descodificadas correctamente, indica as linhas onde o bit de etiqueta

tem um valor não esperado em relação à periodicidade indicada através do k (isto não significa que

há erros, pois o descodificador guia-se pelo bit de etiqueta).

No fim da descodificação é visualizada a imagem descodificada. Para além disso é dada a possibilidade de comparar a imagem descodificada com a imagem original correspondente, indicando-se a percentagem de amostras diferentes (e logo erradas).

3.4 Statistics

Após a descodificação, o botão “Statistics” permite obter uma série de dados estatísticos, nomeadamente:

i) Número de linhas correctamente descodificadas.

ii) Número de bits de etiqueta diferentes do esperado.

iii) Número de perdas de sincronismo devido a palavras “impossíveis”.

iv) Número de linhas com “amostras a mais”.

v) Número de amostras incorrectas na imagem final visualizada (descodificação + método de diminuição do impacto negativo dos erros).

vi) Percentagem da imagem final visualizada incorrecta.

4. SESSÃO DE LABORATÓRIO

Nesta sessão de laboratório pretende-se essencialmente codificar e descodificar imagens, introduzindo-se também alguns erros de transmissão. Lembre-se que os métodos de codificação usados na telecópia são métodos sem perdas e, como tal, se não se introduzirem erros de transmissão, a imagem descodificada é rigorosamente igual à imagem original.

Analise agora os casos de codificação-transmissão indicados de seguida. Para cada caso descodifique o ficheiro de bits corrompido com os vários métodos de diminuição do impacto negativo dos erros, analisando a qualidade subjectiva das várias imagens descodificadas (compare, por exemplo, as imagens descodificadas com o primeiro e o último métodos de diminuição do impacto negativo dos erros).

Caso 1:

Imagem 4 do CCITT codificada com o método de codificação obrigatório do grupo 3

Erros uniformes com probabilidade de erro 10 -3

Caso 2:

Imagem 4 do CCITT codificada com a extensão do grupo 3 correspondente ao Método de READ Modificado e com k = 4

Erros uniformes com probabilidade de erro 10 -3

Caso 3:

Imagem 4 do CCITT codificada com a extensão do grupo 3 correspondente ao Método de READ Modificado e com k = 4

Erros de rajada com probabilidade de ocorrência do início de uma rajada de 10 -4 , comprimento mínimo da rajada de 20 bits e comprimento máximo da rajada de 25 bits

Caso 4:

Imagem 6 do CCITT codificada com a extensão do grupo 3 correspondente ao Método de READ Modificado e com k = 4

Erros uniformes com probabilidade de erro 10 -3

Caso 5:

Imagem 6 do CCITT codificada com a extensão do grupo 3 correspondente ao Método de READ Modificado e com k = 4

Erros de rajada com probabilidade de ocorrência do início de uma rajada de 10 -4 , comprimento mínimo da rajada de 20 bits e comprimento máximo da rajada de 25 bits

Experimente agora à sua vontade !