Você está na página 1de 27

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: Descrio Star bit bits de informao Stop bit Total (bits para transmitir) Imagem 1024 (bits) *1024 (bits) * bits para transmitir: Bits 1 8 1 10

Se um modem transmite 56K em 1sg ento: bits 56000 Tempo (sg) 1

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:

Paso1

Paso2

Paso3

Paso4

Paso5

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

(a) Figura 3: (a) - Imagem com centro em 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 e , (b) Desenho da imagem final com k=2

(b)

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

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 prdisporo. 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 1 Paso 2 ( Paso 5 (( ) ) ) Paso 6 Paso 3 Paso 4 ( )

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 cinza Contando 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 cinza

Histograma 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.m Histograma da imagem 1 em tons de cinza

Histograma 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.m

b) 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 halftoning c) 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 imagens ImHDR1 = hdrread('hw1_atrium.hdr'); ImHDR2 = hdrread('hw1_memorial.hdr'); %tons de cinza T_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 imagens ImHDR1 = hdrread('hw1_atrium.hdr'); ImHDR2 = hdrread('hw1_memorial.hdr'); %tons de cinza T_HDR1 = rgb2gray(ImHDR1); T_HDR2 = rgb2gray(ImHDR2); %colocando os gammas Y_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 imagens ImHDR1 = 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 - e imR=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 imagen figure, imshow(imFinal);title('Imagen Final con gamma por canal'); %para realizar o questao 2.1 - e imR=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 imagen figure, imshow(imFinal);title('Imagen Final con gamma por canal'); %usando a imagem 2 para testar diferentes valores de gamma em cada componente

GammaR=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 imagen figure, 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 end end 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(f atorNStrR); 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); end end 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 end end 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(f atorNStrR); if i==6 imagenreduzida = RedizirFuncion(ImaR,fatorN); imagenreduzida = cat(3,imagenreduzida,imagenreduzida,imagenreduzida); figure, imshow(AunmentarFuncion(imagenreduzida,fatorN),'InitialMagnification', 100); end end

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 2x2 matemp2 = zeros();%para la imagen final de salida %variaveis vcias para o controle de llenado a matrix ContF=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,1 factorB = 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 pesos valsuma = (ima(1,1) - ima(1,2))/2;%valor 1 - valor 2 para sumarle a los pesos con=0;%contador temporal para retar a fatorA for 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 end end %Linea lat izq valsuma = (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) + con=con+1; end end end %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 end end 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 end end %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; ima(f,1);

op1 = ((peso * media) * t11) + val2; op2 = ((peso * media) * t12) + val4; valMednIma = (op1 + op2)/2; nIma(i+1,j+1)= valMednIma; %nIma con=con+1; end end 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 lista if (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'); end end %para normalizar los valores de o a 9 Vmax = max(max(ima)); Vmin = min(min(ima)); %valor de cada intervalo vt3 = (Vmax - Vmin)/9; for i=1: f for j=1:c ima(i,j) = round(ima(i,j)/vt3); end end %creacion de las matrices para halfphoting m0 = zeros(3,3); m1 = [ 0 255 0; 0 0 0; 0 0 0]; m2 = [0 255 0; 0 0 0; 0 0 255];

m3 m4 m5 m6 m7 m8 m9

= = = = = = =

[ [ [ [ [ [ [

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0; 0 0; 0 255; 255; 255; 255; 255;

0 0; 0 0 255]; 0 0; 255 0 255]; 0 0 0; 255 0 255]; 0 0 255; 255 0 255]; 0 0 255; 255 255 255]; 255 0 255; 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

Você também pode gostar