Você está na página 1de 8

Universidade Federal do Cear

Centro de Tecnologia
Departamento de Engenharia de Teleinformtica
Disciplina de Introduo Teoria da Informao

Trabalho de Simulao

Alunos: Maria Carolina Arajo Batista (0345728)


Lucas Moreira Teles
(0321036)
Sandy Ferreira da Costa
(0337673)
Danilo da Nbrega Silveira (0285454)
Professor: Walter C. Freitas Jr.

Fortaleza, 12 de junho de 2014

1 Questo:Nesse trabalho pretende-se desenvolver um programa que gere a


entropia de imagens. As imagens consideradas sero: (1) a imagem lena.jpg com
resoluo 512512 em escala de cinza (grayscale 0-255), (2) a imagem algas.jpg
com resoluo 255 255 em escala de cinza (grayscale 0-255), (3) a imagem
bw.jpg. O seu programa deve:
1.1. Apresentar o histograma das imagens. Comente os resultados obtidos e suas
concluses.
1.2. Calcular a entropia das imagens. Comente os resultados obtidos e suas
concluses.
1.1 As imagens originais e seus respectivos histogramas:

1.2. As entropias de cada imagem so:


lena.jpg em resoluo 512x512 com escala de cinza (0 - 255): 7.4461
algas.jpg em resoluo 525x512 com escala de cinza (0 255): 4.9937
bw.jpg: 2.0686
Comentrios:
A cada imagem nota-se uma diminuio de informao: h menos cores, menos
desenhos, menores mudanas de padro. Como a entropia est relacionada
desordem, a entropia ser maior na imagem que tiver maior informao
desordenada. Isso justifica a imagem lena.jpg ter a maior entropia, e bw.jpg, a
menor dentre as trs analisadas.
2 Questo: Nesse trabalho pretende-se desenvolver um programa que gere um
cdigo de Huffman. As imagens consideradas sero: (1) a imagemlena.jpg com
resoluo 512512 em escala de cinza (grayscale0-255) e (2) a imagemalgas.jpg
com resoluo 255255 em escala de cinza (grayscale0-255).
Comentrios:
A cada imagem nota-se uma mudana na entropia e no comprimento mdio das
palavras: a eficincia dos cdigos tambm muda de acordo com elas. Como a
entropia est relacionada desordem, a entropia ser maior na imagem que tiver
maior informao desordenada.
3 Questo: O canal de comunicao faz a ponte entre transmissor e receptor no
envio da informao, mas por imperfeies e/ou limitaes nos meios de
transmisso o canal introduz no sinal transmitido erros que devem ser mitigados.
A mitigao desses erros se d, por exemplo, por meio da codificao de canal
que introduz redundncia de forma controlada com o objetivo de detectar e
corrigir os erros introduzidos pelo canal de comunicao. Nesse trabalho
pretende-se transmitir a imagem lena.jpg com resoluo 512512em escala de
cinza (grayscale0-255) em diversas situaes de um canal de comunicao com e
sem a utilizao de um codificador de canal.
3.1: Cdigo no apndice.

3.2: Observou-se que ela se comporta de maneira contraria a entropia.


3.3:
N
BER
2
0.1564
4
0.1036
8
0.0491
10
0.0341
12
0.0243
14
0.0173
16
0.0124

3.4:

C = 1- H (p, 1-p)
p = 0.45
H(0.45, 0.55) = 0.992774
C = 7,2259 x 10^-3
Rc <= C
Rc = 1/n
N >= 140

Apndice
Cdigo em plataforma Matlab para a 1 questo:
%Passo 1: Carregar a imagem e calcular seus histogramas:
figure;
lenaoriginal = imread('lena.jpg');
imshow(lenaoriginal);
figure;
graylena = rgb2gray(lenaoriginal);
imshow(graylena);
figure;
imhist(graylena);
figure;
algasoriginal = imread('algas.jpg');
imshow(algasoriginal);
figure;
imhist(algasoriginal);
figure;
bworiginal = imread('bw.jpg');
imshow(bworiginal);
figure;
imhist(bworiginal);
%Passo 2: Calcular a entropia das imagens
lenaentropy = entropy(graylena);
algasentropy = entropy(algasoriginal);
bwentropy = entropy(bworiginal);

Cdigo para 2 questo:


%Codificao de huffman para string
%-------------------------------------------------------------------------string=input('String original. Codificao de Huffman');
string
symbol=[];
count=[];
j=1;
%-------------- Loop para separao de simbolos
for i=1:length(string)
flag=0;
flag=ismember(symbol,string(i));
if sum(flag)==0
symbol(j) = string(i);
k=ismember(string,string(i));
c=sum(k);
count(j) = c;

%caracteres da string

%input

j=j+1;
end
end
ent=0;
total=sum(count);

%total de simbolos

prob=[];
%------------ loop usado para encontrar a probabilidade e entropia.
for i=1:1:size((count)');
prob(i)=count(i)/total;
ent=ent-prob(i)*log2(prob(i));
end
var=0;
%------------ funo para criar o dicionrio
[dict avglen]=huffmandict(symbol,prob);
% Imprimindo dicionrio.
temp = dict;
for i = 1:length(temp)
temp{i,2} = num2str(temp{i,2});
var=var+(length(dict{i,2})-avglen)^2;

%calculando varinica

end
temp
%----------------- funes de codificao e decodificao
sig_encoded=huffmanenco(string,dict)
deco=huffmandeco(sig_encoded,dict);
equal = isequal(string,deco)
%----------------- String decodificada
str ='';
for i=1:length(deco)
str= strcat(str,deco(i));

Cdigo em plataforma Matlab para a 3 questo:

imagem = imread('lena512.bmp');
imagem_code = zeros(512,512);
[p, symbols] = imhist(imagem);
code = str2num(dec2bin(uint32((symbols))));
for i=1:512
for j=1:512

end

imagem_code(i,j) = code(imagem(i,j),1);

end
imagem_code2 = zeros(512,512, 8);
imagem_code3 = zeros(512,512);
imagem_code4 = zeros(512,512);

for i=1:512
for j=1:512
imagem_code2(i,j,:) = double2byte(imagem_code(i,j));
end
end
ndata = bsc(imagem_code2,.25);
for i=1:512
for j=1:512
imagem_code3(i,j) = byte2double(ndata(i,j,:));
end
end

for i=1:512
for j=1:512
imagem_code4(i,j) = find(code == imagem_code3(i,j) );
end
end
imshow(uint8(imagem_code4))