Trabalho de Computação Gráfica
Por: Gabriel Martins • 1/5/2020 • Relatório de pesquisa • 629 Palavras (3 Páginas) • 263 Visualizações
[pic 1]
Curso: Ciência da Computação / Engenharia da Computação
Disciplina: Computação Gráfica
Alunos: Arthur Rezende Bueno Pontes Barata -- 1712082020
Gabriel Antonio de Vasconcellos Barreto -- 1622082022
Gabriel Martins Caldas e Almeida -- 1612082068
ATIVIDADE Nº 3 – MODIFICAÇÃO EM ESCALA
Nesta atividade, deve-se escrever um algoritmo em Matlab que realize o seguinte procedimento: aplicar modificação em escala a uma imagem em escala de cinza na horizontal e na vertical, conforme determinado pelo usuário do algoritmo.
Função Criada:
function out = amplia_imagem(img, fatores)
% 𝑃𝐻/𝑄𝐻 na horizontal
% 𝑃V/𝑄V na vertical
ph = fatores(1);
qh = fatores(2);
pv = fatores(3);
qv = fatores(4);
[li, c] = size(img);
wph = ones(1,ph)/ph;
wqh = ones(1,qh)/qh;
wpv = ones(1,pv)/pv;
wqv = ones(1,qv)/qv;
% dilatar na horizontal
dilat_h = zeros(li, ph*c);
for j=1:li
for i=1:c
dilat_h(j,(i*ph)) = img(j,i);
end
end
dilat_h = conv2(dilat_h, wph);
% comprimir na horizontal
convh = conv2(dilat_h, wqh);
comp_h = zeros(li, int64((ph*c)/qh));
for j=1:size(comp_h, 1)
for i=1:size(comp_h, 2)
comp_h(j, i) = convh(j, i*qh);
end
end
% dilatar na vertical
dilat_v = zeros(pv*li, size(comp_h,2));
for j=1:size(comp_h, 2)
for i=1:size(comp_h, 1)
dilat_v((i*pv), j) = comp_h(i,j);
end
end
dilat_v = conv2(dilat_v, wpv);
% comprimir na vertical
conv_v = conv2(dilat_v, wqv);
comp_h = zeros(int64(size(dilat_v,1)/qv), size(dilat_v,2));
for j=1:size(comp_h, 2)
for i=1:size(comp_h, 1)
comp_h(i, j) = conv_v(i*qv, j);
end
end
out = comp_h;
A função criada recebe como parâmetros uma imagem e os fatores N horizontal e vertical tanto para dilatação quanto para a compressão da imagem.
Escolhemos utilizar somente a máscara constante(wp/wq) para a implementação deste experimento, porém pode ser utilizado outras máscaras como a Triangular por exemplo.
A máscara constante foi escolhida pelo fato de ser mais fácil de ser trabalhada, o que facilita o entendimento do procedimento que está sendo feito.
Para realizarmos a dilatação de uma linha ou coluna por N é feita a inserção de N -1 zeros entre os pixels da imagem seguida de uma convolução.
[pic 2]
Na função criada, na parte da dilatação, foi criada uma imagem/matriz de zeros e com um ciclo de repetição a nova imagem vai sendo preenchida com os pixels da imagem dada na entrada. Cada preenchimento ocorre de acordo com o contador do ciclo e com o fator de dilatação horizontal e vertical. Este procedimento foi utilizado para realizar a inserção dos zeros na imagem da entrada.
...