Universidade de Braslia (UnB) Faculdade de Tecnologia
(FT)Departamento de Engenharia Eltrica (ENE)
Nome: Miguel Eduardo Gutierrez Paredes
Primeira lista de exerccios.
QUESTES TERICAS
Problema 1.1: Uma medida de transmisso de dados digitais e a
baud rate, definida como o nu mero de bits transmitidos por
segundo. Geralmente, a transmisso e realizada utilizando pacotes
contendo 1 start bit, 8 bits de informao e 1 stop bit. Usando estes
dados, responda:
a) Qual ser o tempo de transmisso de uma imagem de 1024x1024 com
256 nveis de cinza usando um modem com uma taxa de transmisso de
56?
Dados iniciais:DescrioBits
Star bit1
bits de informao8
Stop bit1
Total (bits para transmitir)10
Imagem 1024 (bits) *1024 (bits) * bits para transmitir:
Se um modem transmite 56K em 1sg ento:
bitsTempo (sg)
560001
O tempo necessrio para transmitir a informao da imagem com os
bits de Star e Stop :
Qual ser o tempo de transmisso para uma taxa de 750K, a
velocidade de uma conexo DSL (digital subscriber line)?
Usando o raciocnio da questo anterior o
Problema 1.2: Suponha que uma rea plana com centro em (x0, y0) e
iluminada por uma fonte de luz com distribuio de intensidade dada
por:
Assuma que K = 255 e que a refletncia da rea constante e igual a
1,0. Se a imagem resultante digitalizada com k bits de resoluo de
intensidade e o olho humano pode detectar uma mudana abrupta de 8
nveis de intensidade entre pixels adjacentes.
Dados:
K=255 Refletncia cons. = 1
Que valor de k causar artefatos de falso contorno. Desenhar a
imagem para k = 2
Figura 1: Quantizao de uma imagem com centro em em 255 bit
A digitalizao (quantizao) com k bits, significa que discreteamos
a intensidade da imagem, assim que o menor cambio dado por:
Figura 2: Quantizao de uma imagem com centro em em 8 nveis.
Se h uma mudana maior de 8 nveis de intensidade nosso olho
percebe falsos contornos, dizer, quando maior ou igual a 8.
Ento:
Paso1Paso2Paso3Paso4Paso5
Ento, como resultado pode-se concluir que quando n 5 podem ser
observados falsos contornos.
O desenho da imagem ficaria assim:
Figura 3: Imagem com centro em e onde pode-se perceber quando
ocorrem os falsos contornos.
Para k=2, tem-se
(b)(a)
Figura 3: (a) - Imagem com centro em e , (b) Desenho da imagem
final com k=2
Problema 1.3:
a) Desenvolva um algoritmo para converter um caminho
conectado-de-8, de 1 pixel de largura, para um caminho
conectado-de-4. Um caminho conectado-de-8 e formado por pixels
adjacentes-de-8.
O algoritmo eliminaria as linhas diagonais que forma os pixels
adjacentes-de-8, trocando-as por duas uma na vertical e a outra na
horizontal.
b) Quais so as condies necessrias para que a distncia D4 entre
dois pontos p e q seja igual ao caminho-de-4 mais curto entre estes
pontos. Este caminho e u nico?
Primeiro reconhecer todos as distancias que existam, depois
contar os pontos acumulados de cada distncia. A menor quantidade de
pontos obviamente a distncia mais curta, portanto pode ento existir
vrios caminhos.
Problema 1.4:
(a) Qual o efeito que anular o bit menos significativo (LSB) de
uma imagem teria sobre o histograma desta imagem?
A frequncia dos LSB da imagem desaparecem do histograma.
(b) Qual o efeito que anular o bit mais significativo de uma
imagem teria sobre o histograma desta imagem?
A metade dos valores do histograma da imagem desaparece.
(c) Explique porque a tcnica de equalizao de um histograma
discreto no gera um histograma plano.
A tcnica de equalizao de um histograma discreto produz uma
expanso do histograma original ocupando todos os nveis de
intensidade. Isto no quer dizer que deixa totalmente normalizados
os nveis de intensidade de uma imagem, por tanto a tcnica no produz
um histograma plano.
Problema 1.5: Mostre que a subtrao do Laplaciano de uma imagem
proporcional ao unsharp masking. Use a definio do Laplaciano dada
pela Eq. (3.7-4).
QUESTES PRTICAS
Problema 2.1: Visualizando imagens com alto alcance dinmico
(High Dynamic Range - HDR):
a) Leia o material sobre alto alcance dinmico (High Dynamic
Range - HDR) disponibilizado na pgina do curso. O que so imagens
HDR, como so geradas e quais as suas vantagens?
a.1- So imagens de alto rango dinmico, dizer, com imagens que
passam por um conjunto de tcnicas que permitem um melhor rango
dinmico de iluminao entre as zonas mais claras e as mais escuras de
uma imagem. As imagens HDR so mais acordes com o olho humano.
a.2- Uma imagem HDR gerada tomando pelo menos trs fotografias
com diferentes tipos de exposies, assim:
Foto mais clara (maior exposio) Foto normal Foto mais escura
(menor exposio)
a.3- Vantagens: Melhor percepo de detalhes de uma imagem. Melhor
equalizao de contraste na imagem Melhor percepo de bordes na
imagem
b) Uma cmera tira fotos HDR de uma cena com uma razo de
contraste igual a:
No qual e so os valores de intensidade de luz mximos e mnimos,
respectivamente, capturados da cena. A cmera tem um fator de
pr-distoro igual a = 3.0, ou seja:
No qual e so as sadas de tenso da cmera apo s a aplicao do fator
de pr-disporo. A imagem capturada e apresentada em um monitor (CRT
ou LCD) com = 2, 0, ou seja:
Qual a razo de contraste necessrio para acomodar o alcance
dinmico da cena sem saturao das reas claras e escuras da
imagem?
Paso 1Paso 2Paso 3Paso 4
Paso 5Paso 6
c) Baixe as duas imagens HDR hw1_memorial.hdr e hw1_atrium.hdr
da pgina do curso. Leia as imagens utilizando a funo do matlab
hdrread. Converta a imagem para tons de cinza utilizando a funo
rgb2gray. Utilizando imshow, visualize a imagem. possvel ver os
detalhes da imagem com nitidez?
Figura 4: Imagens HDR Originais convertidas a tons de
cinzaContando com que a imagem seja visualizada em escala 1:1
possvel ver os detalhes da imagem com nitidez (ver Anexo1e arquivo
ImagensHDR.m).
d) Aplique uma transformao s imagens em tons de cinza obtidas em
(c). Visualize as imagens utilizando imshow. Para cada imagem, qual
a melhoria introduzida pela transformao?
Usando o comando de Matlab Imajust pode-se aplicar transformaes
de . Escolhendo =0.4 na imagem 1 (hw1_memorial.hdr) pode-se
melhorar a relao de contraste. A seguir podem-se observar as
imagens (ver a melhora na percepo dos detalhes na correo do gamma)
e seus histogramas:
Original: Imagen 1 = 0.4
.
Histograma da imagem 1 em tons de cinzaHistograma com = 0.4
Figura 5: Imagem HDR1 Gray e Gamma e seus histogramas.
Usando =0.6 na imagem 2 (hw1_atrium.hdr) pode-se melhorar a
relao de contraste. A seguir podem-se observar as imagens (ver a
melhora na percepo dos detalhes na correo do gamma) e seus
histogramas:
Original: Imagen 1 = 0.6
Ver Anexo2 e arquivo ImagensHDR_gamma.mHistograma da imagem 1 em
tons de cinzaHistograma com = 0.4
e) Repita (d) aplicando a transformao para cada uma das
componentes r (red - vermelho), g (green - verde) e b (blue - azul)
das imagens. Inicialmente, use o mesmo valor de utilizado em (d).
Em seguida, experimente utilizar diferentes valores de para as
diferentes componentes de cores. Discuta os resultados obtidos.
Quando aplicada uma transformao de igual para todos os
componentes (RGB) da imagem e depois a imagem reconstruda,
aparentemente o mesmo que pegar a imagem original e aplicar
diretamente o gama.
Figura 6: Componentes (RGB) da imagem 1 e suas transformaes de
=0.4 mais a imagem final reconstruda.
Por outro lado, brincando um pouco com distintos valores de
pode-se perceber que as mudanas de gamma em cada componente
proporciona diferentes detalhes. Assim, mudando o valor de um dos
componentes (seja R, G ou B) da imagem com um valor de menor do que
1, a imagem final reconstruda tende a tomar a cor do componente com
mais baixo.
Na figura 7 pode-se observar a imagem 2 tomada como exemplo para
aplicar diferentes valores de gamma para cada componente da
imagem.
Figura 7: Imagem 2 e variaes de .
Da figura 7 de esquerda para a direita: Imagem 2 Original
Componentes (RGB) da imagem 2 com transformaes de =0.6 Imagem 2 com
transformaes de , e .
Ver Anexo3 e arquivo ImagensHDR_RGB.m
Problema 2.2: Resolva as seguintes questes, sem utilizar as
funes do Matlab prontas (tais como imresize).
a) Elabore um programa para reduzir ou aumentar a resoluo
espacial de uma imagem por um fator n. Para aumentar a resoluo
utilize a tcnica de replicao. O fator n deve ser entrado pelo
usurio.
Figura 8: Imagem redimensionada (Figure 1) com fator = 3 (Figure
2).
Ver anexo 4 e arquivo AumentarImagem.m
b) Utilize o seu programa para gerar imagens com resoluo
espacial reduzida por fatores de 2, 4, 8, 16, 32 e 64. Imprima as
imagens obtidas no mesmo tamanho e comente sobre as diferenas de
qualidade entre elas. usada como exemplo uma imagem de 372x228
pixels para reduzi-la por fatores de 2, 4, 8, 16, 32 e 64. A seguir
apresentado o resultado da reduo.
Figura 9: Imagem reduzida com fatores 2, 4, 8, 16, 32 e 64.
Ver anexo 5 e arquivo resolucaEspacialReduzida.m e as funes
AumentarFuncion.m e AumentarFuncion.m
c) Utilize o seu programa para aumentar a resoluo espacial da
menor imagem obtida em b) at o tamanho original. Imprima a imagem
original e a imagem obtida por este procedimento, comentando sobre
as diferenas de qualidade entre elas.
Figura 10: Imagem de exemplo reduzida com fator 64 e ampliada
com fator 64.
A principal caraterstica que pode-se notar a perda total da
informao da imagem, pois no possvel reconhecer na imagem ampliada
nenhuma caraterstica ou geometria da imagem original. Pode-se
concluir, ento, que a tcnica de replicao no uma tcnica favorvel
para ampliar ou reduzir imagens.Ver anexo 6 e arquivo
resolucaEspacialReduzida2.m
d) Modifique o seu programa de forma a utilizar a tcnica de
interpolao bilinear. Repita o item c) e comente os resultados.Os
resultados obtidos podem se observar na Figura 11 a seguir.
Figura 11: Imagem de exemplo reduzida com fator 64 e ampliada
com fator 64.
Da figura 11 de esquerda para a direita: Imagem Original Imagem
reduzida com fator 3 Imagem ampliada fator 3 com algoritmo
desenvolvido para realizar interpolao bilinear.
Pode-se perceber que a interpolao bilinear oferece uma melhor
tcnica para ampliar e reduzir imagens, no entanto a interpolao
bilinear no uma tcnica perfeita. Ver Anexo 7 e os arquivo
finalInterpolacionBil.m e FuncionIntBilAumentar.m
Problema 2.3: Neste exerccio implementaremos o algoritmo
halftoning para impresso, que baseado em padres de pontos. A figura
abaixo mostra os padro es que podem ser utilizados para aproximar
dez nveis de tons de cinza. Cada nvel representado por um padro 3 3
de pontos brancos e pretos. Uma rea de 3 3 pixels cheia de pontos
pretos uma aproximao de um nvel de cinza preto ou 0. Da mesma
forma, uma rea de 3 3 pixels de pontos brancos uma aproximao do
nvel de cinza branco ou 9. Os outros padro es so aproximaes dos
nveis de cinza intermedirios (entre os dois extremos 0 e 9).
Observe que cada pixel na imagem de entrada ira corresponder a um
padro de 3 3 pixels na imagem impressa. Desta forma, a resoluo
espacial ser reduzida a 33% da resoluo espacial da imagem
original.
Figura 12: Padres de pontos do algoritmo halftoning usados para
impresso.
a) Elabore um programa halftoning para imprimir imagens em tons
de cinza que seja baseado nestes padres de pontos. O programa deve
ser capaz de ajustar o tamanho da imagem de forma a que este no
exceda a rea de uma folha de papel A4. O programa tambm deve ser
capaz de escalonar os nveis de cinza da imagem original de forma
que a imagem de sada utilize todo o intervalo dos padres
halftoning.
Figura 12: Implementao do algoritmo halftoning (Imagem original
e resultado).Ver Anexo 8 e os arquivo halfphoting01.m e
FunEncherMat.mb) Escreva um programa para gerar uma imagem de
padres de teste consistindo de um conjunto de quadrados de tamanho
256 256, para o qual o primeiro quadrado tem valor uniforme igual a
0, o segundo tem valor uniforme igual a 1, etc. O ltimo quadrado
deve ter valor 255. Imprima esta imagem utilizando o programa
desenvolvido em (a).
Figura 13: Imagem gerada de 256x256 e resultado do uso do
algoritmo halftoningc) Imprima as Figs. 2.22(a), (b) e (c) do livro
texto usando o programa desenvolvido. Voc concorda com as observao
es das pags. 65-66, referente ao grfico da Fig. 2.23? Explique. Voc
pode baixar as figuras da pgina do livro.Professora, busquei na
edio 2 e 3 do libro do Gonzles e no achei as imagens das que fala
esta questo, fica pendente para entregar esta questo posteriormente
se ainda for possvel.
ANEXOS
Anexo 1: programa feito no Matlab 2013b do problema 2.1c
clc;close all;clear; %le as imagensImHDR1 =
hdrread('hw1_atrium.hdr');ImHDR2 = hdrread('hw1_memorial.hdr');
%tons de cinzaT_HDR1 = rgb2gray(ImHDR1);T_HDR2 =
rgb2gray(ImHDR2);
figure,subplot(2,2,1);imshow(ImHDR1);title('hw1 atrium.hdr
Original');subplot(2,2,2);imshow(T_HDR1);title('Gray');subplot(2,2,3);imshow(ImHDR2);title('hw1
memorial.hdr
Original');subplot(2,2,4);imshow(T_HDR2);title('Gray');
Anexo 2: programa feito no Matlab 2013b do problema 2.1d
clc;close all;clear; %le as imagensImHDR1 =
hdrread('hw1_atrium.hdr');ImHDR2 = hdrread('hw1_memorial.hdr');
%tons de cinzaT_HDR1 = rgb2gray(ImHDR1);T_HDR2 = rgb2gray(ImHDR2);
%colocando os gammasY_HDR1=imadjust(T_HDR1,[],[],0.4);
Y_HDR2=imadjust(T_HDR2,[],[],0.6);
figure,subplot(2,4,1);imshow(T_HDR1);title('Gray
1');subplot(2,4,2);imhist(T_HDR1);title('Histogrma(Gray
1)');subplot(2,4,3);imshow(Y_HDR1);title('1
GAMMA=0.4');subplot(2,4,4);imhist(Y_HDR1);title('1
Histogrma(GAMMA)'); subplot(2,4,5);imshow(T_HDR2);title('Gray
2');subplot(2,4,6);imhist(T_HDR2);title('Histogrma(Gray
2)');subplot(2,4,7);imshow(Y_HDR2);title('2
GAMMA=0.6');subplot(2,4,8);imhist(Y_HDR2);title('2
Histogrma(GAMMA)');
Anexo 3: programa feito no Matlab 2013b do problema 2.1e
clc;close all;clear; %le as imagensImHDR1 =
hdrread('hw1_atrium.hdr');ImHDR2 = hdrread('hw1_memorial.hdr');
figure,subplot(1,2,1);imshow(ImHDR1);title('hw1 atrium.hdr
Original');subplot(1,2,2);imshow(ImHDR2);title('hw1 memorial.hdr
Original'); %para realizar o questao 2.1 - eimR=ImHDR1(:,:,1);
imG=ImHDR1(:,:,2); imB=ImHDR1(:,:,3);
GammaR=imadjust(imR,[],[],0.4);GammaG=imadjust(imG,[],[],0.4);GammaB=imadjust(imB,[],[],0.4);
figure,subplot(2,3,1);imshow(imR);title('Red');subplot(2,3,2);imshow(imG);title('Gren');subplot(2,3,3);imshow(imB);title('Blue');subplot(2,3,4);imshow(GammaR);title('Red
con Gamma');subplot(2,3,5);imshow(GammaG);title('Gren con
Gamma');subplot(2,3,6);imshow(GammaB);title('Blue con Gamma');
imFinal = cat(3,GammaR,GammaG,GammaB);%concateando las matrices RGB
en una sola imagenfigure, imshow(imFinal);title('Imagen Final con
gamma por canal'); %para realizar o questao 2.1 -
eimR=ImHDR2(:,:,1); imG=ImHDR2(:,:,2); imB=ImHDR2(:,:,3);
GammaR=imadjust(imR,[],[],0.4);GammaG=imadjust(imG,[],[],0.4);GammaB=imadjust(imB,[],[],0.4);
figure,subplot(2,3,1);imshow(imR);title('Red');subplot(2,3,2);imshow(imG);title('Gren');subplot(2,3,3);imshow(imB);title('Blue');subplot(2,3,4);imshow(GammaR);title('Red
con Gamma');subplot(2,3,5);imshow(GammaG);title('Gren con
Gamma');subplot(2,3,6);imshow(GammaB);title('Blue con Gamma');
imFinal = cat(3,GammaR,GammaG,GammaB);%concateando las matrices RGB
en una sola imagenfigure, imshow(imFinal);title('Imagen Final con
gamma por canal'); %usando a imagem 2 para testar diferentes
valores de gamma em cada
componenteGammaR=imadjust(imR,[],[],0.5);GammaG=imadjust(imG,[],[],1);GammaB=imadjust(imB,[],[],1.5);
imFinal = cat(3,GammaR,GammaG,GammaB);%concateando las matrices RGB
en una sola imagenfigure, imshow(imFinal);title('Testando varios
gamas por componente Imagem 2');
Anexo 4: programa feito no Matlab 2013b do problema 2.2a
clc;close all;clear; Ima =
imread('ImagenQ2_2a1.jpg');Ima=rgb2gray(Ima);
[f,c]=size(Ima);ImaAum = zeros();fatorN = input ('Ingrese o factor:
'); ff=0;for i=1:fatorN:f*fatorN ff=ff+1; cc=0; for
j=1:fatorN:c*fatorN cc=cc+1; %para llenar segun el factor for
fr=0:fatorN-1 for cr=0:fatorN-1 ImaAum(i+fr,j+cr)=Ima(ff,cc); end
end endend ImaFinaRed = uint8(ImaAum);figure,
imshow(Ima,'InitialMagnification',100);figure,
imshow(ImaFinaRed,'InitialMagnification',100);
Anexo 5: programa feito no Matlab 2013b do problema 2.2b
clc;close all;clear; %ImaA = imread('ImagenQ2_2a.jpg');ImaR =
imread('testeHisto.jpg'); % figure,
imshow(ImaA,'InitialMagnification',100);title('Original Ampliar');
figure, imshow(ImaR,'InitialMagnification',100);title('Original
Redizir'); for i=1:6 fatorN = 2^i; StrfatorN = num2str(fatorN);
%fatorNStrA = strcat({'Ampliar fator n='},{StrfatorN}); %fatorNStrA
= ['Ampliar fator n=' num2str(fatorN)]; fatorNStrR = ['Reduzir
fator n=' num2str(fatorN)]; %fatorNStrR = strcat({'Reduzir fator
n='},{StrfatorN}); %figure,
imshow(AunmentarFuncion(ImaA,fatorN),'InitialMagnification',100);title(fatorNStrA);
figure,
imshow(RedizirFuncion(ImaR,fatorN),'InitialMagnification',100);title(fatorNStrR);end
FUNO REDUZIR E AUMENTAR RedizirFuncion.m
function ImaFinaRed = Reduzir (InIma,fatorN)
Ima=rgb2gray(InIma);%escala de grices [f,c]=size(Ima);ImaAum =
zeros();%fatorN = 3; ff=0;for i=1:fatorN:f ff=ff+1; cc=0; for
j=1:fatorN:c cc=cc+1; ImaAum(ff,cc)=Ima(i,j); endend ImaFinaRed =
uint8(ImaAum);
AunmentarFuncion.m
function ImaFinaRed = AunmentarFuncion (InIma,fatorN)
Ima=rgb2gray(InIma);%escala de grices [f,c]=size(Ima);ImaAum =
zeros();%fatorN = 3; ff=0;for i=1:fatorN:f*fatorN ff=ff+1; cc=0;
for j=1:fatorN:c*fatorN cc=cc+1; %para llenar segun el factor for
fr=0:fatorN-1 for cr=0:fatorN-1 ImaAum(i+fr,j+cr)=Ima(ff,cc); end
end endend ImaFinaRed = uint8(ImaAum);
Anexo 6: programa feito no Matlab 2013b do problema 2.2c
clc;close all;clear; %ImaA = imread('ImagenQ2_2a.jpg');ImaR =
imread('testeHisto.jpg'); % figure,
imshow(ImaA,'InitialMagnification',100);title('Original Ampliar');
figure, imshow(ImaR,'InitialMagnification',100);title('Original
Redizir');imagenreduzida = zeros();for i=1:6 fatorN = 2^i;
StrfatorN = num2str(fatorN); %fatorNStrA = strcat({'Ampliar fator
n='},{StrfatorN}); %fatorNStrA = ['Ampliar fator n='
num2str(fatorN)];% fatorNStrR = ['Reduzir fator n='
num2str(fatorN)]; fatorNStrR = strcat({'Reduzir fator
n='},{StrfatorN}); %figure,
imshow(AunmentarFuncion(ImaA,fatorN),'InitialMagnification',100);title(fatorNStrA);
figure,
imshow(RedizirFuncion(ImaR,fatorN),'InitialMagnification',100);title(fatorNStrR);
if i==6 imagenreduzida = RedizirFuncion(ImaR,fatorN);
imagenreduzida =
cat(3,imagenreduzida,imagenreduzida,imagenreduzida); figure,
imshow(AunmentarFuncion(imagenreduzida,fatorN),'InitialMagnification',100);
endend
Anexo 7: programa feito no Matlab 2013b do problema 2.2d
clc;close all;clear; factorN=3;% Ima =
imread('ImagenQ2_2a1.jpg');Ima = imread('testeHisto.jpg');Ima =
imresize(Ima, 1/factorN, 'bilinear');figure, imshow(Ima);Ima =
imresize(Ima, factorN, 'bilinear');figure, imshow(Ima);
Ima=rgb2gray(Ima);% Ima = [1 5; 4 5; 7 5; 0 9];% Ima = [1 6; 6 1];%
Ima = 28 *Ima;figure, imshow(uint8(Ima)); % factorN = (factorN
*2)-1;matemp1 = zeros();%para la trxi 2x2matemp2 = zeros();%para la
imagen final de salida %variaveis vcias para o controle de llenado
a matrixContF=0;ContC=0;%recoloco los valores de f y c
[f,c]=size(Ima); for i=1:f-1 for j=1:c-1 %coloco los valores
val1=Ima(i,j); val2=Ima(i,j+1); val3=Ima(i+1,j); val4=Ima(i+1,j+1);
%creo la matriz 2x2 matemp1 = [val1 val2; val3 val4]; %caculo los
valores con la media ponderada matemp1 =
FuncionIntBilAumentar(double(matemp1),factorN); %para llenar segun
el factor [fr,cr]=size(matemp1); %paso los valores a la nueva
matriz for ir=1:fr for jr=1:cr
matemp2(ir+ContF,jr+ContC)=matemp1(ir,jr); end end% matemp2 ContC =
ContC + (cr-1); end ContF = ContF + (fr-1); ContC = 0;end %
[f,c]=size(matemp2);% vr = 0;% for i=1:f+1% matemp2(i,c+1) = vr;%
end% for i=1:f+1% matemp2(c+1,i) = vr;% end
figure,imshow(uint8(matemp2));
funo FuncionIntBilAumentar.m
function ImaFinaAumIntBil = FuncionIntBilAumentar (ima,factorIN)
% factorIN=(factorIN*2)-1;factorA = factorIN -1;%contar los valores
de cada peso (casilla) xej: 3,2,1factorB = factorIN +1;%Para saber
el valor maximo que va a tener mi matriz nIma = zeros();%creo una
matriz vacia para rellenar [f,c] = size(ima);%asigno los valores
maximos de la matriz de entrada media = 1/(factorIN/2);%calculo el
valor que multiplicar los pesos %Linea Sup%valsuma = (ima(1,1) -
ima(1,2))/2;%valor 1 - valor 2 para sumarle a los pesosvalsuma =
(ima(1,1) - ima(1,2))/2;%valor 1 - valor 2 para sumarle a los
pesoscon=0;%contador temporal para retar a fatorAfor i=1:factorB if
i==1 nIma(1,i)=ima(1,i);% para el primer valor de la nueva matriz
else if i==factorB nIma(1,i)=ima(1,c);% para el valor final de la
nueva matriz else nIma(1,i)=(((factorA-con)*media)*valsuma) +
ima(1,c);% para los valores intermedios con=con+1; end endend
%Linea lat izqvalsuma = (ima(1,1) - ima(2,1))/2;con=0;for
i=1:factorB if i==1 nIma(i,1)=ima(1,i); else if i==factorB
nIma(i,1)=ima(f,1); else nIma(i,1)=(((factorA-con)*media)*valsuma)
+ ima(f,1); con=con+1; end endend %Linea lat derz valsuma =
(ima(1,2) - ima(2,2))/2;con=0; for i=1:factorB if i==1
nIma(1,factorB)=ima(1,c); else if i==factorB
nIma(factorB,factorB)=ima(f,c); else
nIma(i,factorB)=(((factorA-con)*media)*valsuma) + ima(f,c);
con=con+1; end endend valsuma = (ima(2,1) - ima(2,2))/2;con=0;for
i=1:factorB if i==1 nIma(factorB,i)=ima(f,i); else if i==factorB
nIma(factorB,factorB)=ima(f,c); else
nIma(factorB,i)=(((factorA-con)*media)*valsuma) + ima(f,c);
con=con+1; end endend %para colocar los valores intermedios%para
rrecorrer los valores de la nueva matriz [f,c] = size(nIma);for
i=1:f-2 con=0; for j=1:c-2 val1=nIma(1,j+1); val2=nIma(f,j+1);
val3=nIma(i+1,1); val4=nIma(i+1,c); t11 = (val1 -val2)/2; t12 =
(val3 -val4)/2; %fin del primer paso %segundo paso Operacion con
los pesos e media peso = factorA-con; op1 = ((peso * media) * t11)
+ val2; op2 = ((peso * media) * t12) + val4; valMednIma = (op1 +
op2)/2; nIma(i+1,j+1)= valMednIma; %nIma con=con+1; endend
ImaFinaAumIntBil = nIma;
Anexo 8: programa feito no Matlab 2013b do problema 2.3a
clc;close all;clear; % ima = [127 55 169; 255 6 78; 130 97
228];% ima = imread('interpolation_2D.jpg');ima =
imread('interpolation_2D-interp.jpg');% ima =
imread('testeHisto.jpg');ima = rgb2gray(ima);figure, imshow(ima);
%ver que no ultrapase el tamanho da folha A4%para realizar isso,
tem-se como referencia inicial que um pixel % igual a 1 milimetro
%dados iniciales:%Uma folha A4 tem 2100mm (eixo X - colunas) x
2970nn (eixo Y - filas)%no final do algoritmo nao pode ultrapasar
ese limite[f,c]= size(ima); % la primera parte listaif (f*3) >
2970 || (c*3) > 2100 vt1 = f*3; vt1 = vt1 - 2970; vt2 = c*3; vt2
= vt2 - 2100; if vt1>=vt2 vt1 = vt1/3; vt1 = abs(f-vt1); vt1 =
vt1 *100 / f; ima = imresize(ima,vt1,'bilinear'); else vt2 = vt2/3;
vt2 = abs(c-vt2); vt2 = vt2 *100 / f; ima =
imresize(ima,vt2,'bilinear'); endend %para normalizar los valores
de o a 9Vmax = max(max(ima));Vmin = min(min(ima)); %valor de cada
intervalovt3 = (Vmax - Vmin)/9; for i=1: f for j=1:c ima(i,j) =
round(ima(i,j)/vt3); endend %creacion de las matrices para
halfphotingm0 = zeros(3,3);m1 = [ 0 255 0; 0 0 0; 0 0 0];m2 = [0
255 0; 0 0 0; 0 0 255];m3 = [ 255 255 0; 0 0 0; 0 0 255];m4 = [ 255
255 0; 0 0 0; 255 0 255];m5 = [ 255 255 255; 0 0 0; 255 0 255];m6 =
[ 255 255 255; 0 0 255; 255 0 255];m7 = [ 255 255 255; 0 0 255; 255
255 255];m8 = [ 255 255 255; 255 0 255; 255 255 255];m9 = [ 255 255
255; 255 255 255; 255 255 255]; nIma = zeros();contC=0;contF=0;for
i=1: f contC=0; for j=1:c %ima(i,j) = round(ima(i,j)/vt3); switch
ima(i,j) case 0 nIma=FunEncherMat(contF,contC,m0,nIma);
contC=contC+3; case 1 nIma=FunEncherMat(contF,contC,m1,nIma);
contC=contC+3; case 2 nIma=FunEncherMat(contF,contC,m2,nIma);
contC=contC+3; case 3 nIma=FunEncherMat(contF,contC,m3,nIma);
contC=contC+3; case 4 nIma=FunEncherMat(contF,contC,m4,nIma);
contC=contC+3; case 5 nIma=FunEncherMat(contF,contC,m5,nIma);
contC=contC+3; case 6 nIma=FunEncherMat(contF,contC,m6,nIma);
contC=contC+3; case 7 nIma=FunEncherMat(contF,contC,m7,nIma);
contC=contC+3; case 8 nIma=FunEncherMat(contF,contC,m8,nIma);
contC=contC+3; case 9 nIma=FunEncherMat(contF,contC,m9,nIma);
contC=contC+3; otherwise end%fin switch end contF = contF + 3;end%
ima;% nIma;figure,imshow(uint8(nIma));
funcao FunEncherMat.m
function MatCheia =
FunEncherMat(ValF,ValC,MatHP,Mfinal)[f,c]=size(MatHP); for i=1: f
for j=1:c Mfinal(i+ValF,j+ValC) = MatHP(i,j); end end MatCheia =
Mfinal;end