You are on page 1of 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

Introdução de erros
Imagem original Codificador Descodificador Imagem descodificad
de transmissão

Bits de código sem erros Bits de código com erros

Visualizar Visualizar

Figura 1- Sistema de Telecópia

1. CODIFICADOR DE TELECÓPIA
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”.

1
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).

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

• Para cada tom (preto ou branco):


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.

3
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.

4
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, o botão “Statistics” permite obter uma série de dados estatísticos,
nomeadamente:
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:

5
• 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

6
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

7
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 !

You might also like