Doç. Dr. GÜRAY SONUGÜR

Doç. Dr. Güray SONUGÜR – Öğrenci Bilgi Paylaşım Platformu

2018 – Görüntü İşleme Örnek Soru-1

Aşağıdaki figür penceresinde gösterildiği gibi herhangi bir görüntüye kırmızı renkli köşegen çizen programı yazınız.

Yanıt:

Eğer resim satır sayısı sütun sayısına eşit değilse ilk yöntemde imresize() komutu ile eşitleyebiliriz.

clc;clear;close all;
% x=imread(‘headquarters-2.jpg’);
x=imread(‘steve-1.jpg’);
if (size(x,1)~=size(x,2)) %imge boyutları eşit değil ise eşitleniyor.
x=imresize(x,[size(x,1) size(x,1)]);
end
subplot(1,2,1)
imshow(x)
title(‘Orjinal resim’)
for i=1:size(x,1)
for j=1:size(x,2)
if (i==j || i+j==size(x,2)+1)
x(i,j,1)=255;
x(i,j,2)=0;
x(i,j,3)=0;
end
end
end
subplot(1,2,2)
imshow(x);
title(‘Son Resim’)

Eşitlemiyorsak Emre Kaya arkadaşımızın çözümünü kullanabiliriz.

% EMRE KAYA 134220003
% Soruda herhangi bir resim dediği için x ve y eksenlerine resmin ölçüsüne
% göre bir orantı yapılmalıdır. b=size(x,2)/size(x,1); bu orantıyı sağladı
%size(x,1)= y ekseni uzunluğu size(x,2)=x ekseni uzunluğu
% x(satır, sutun, renk)
x=imread(‘steve-2.jpg’); % Kare olmayan bir fotoğraf seçildi
b=size(x,2)/size(x,1); %% x ekseninin y eksenine orantısı.
for i=1:size(x,1) % y ekseni kadar döngüyü döndürdük.
% sol üst kçşeden sağ alt köşeye
x(i,round(i*b),1)=255; %% yuvarlamanın sebebi, piksellere float bir değer girilmemesi.
x(i,round(i*b),2)=0; % Bu yüzden katsayı ile döngü değeri işleme girmeden önce
x(i,round(i*b),3)=0; % en yakın tam sayıya dönüştürülür.
% sağ üst köşeden sol alt köşeye
x(size(x,1)+1-i,round(i*b),1)=255; % size(x,1)+1-i=> +1 eklemenin sebebi. Değerin 0 olması ve hata vermesini önmelem
x(size(x,1)+1-i,round(i*b),2)=0;
x(size(x,1)+1-i,round(i*b),3)=0;
end
figure;
imshow(x);