Matlab’da resim büyütme, yakınlaşma - image zoom
|
Bir resme nasıl “zoom” yapılır? Piksellerin aralarına yeni pikseller ekleyerek. Şimdi 2 farklı yolla 2X zoom yapacağım. 1. yol: Aslında saçma bir yol. Basit bir yol da ondan. Mantık şu. Bir pikselin sağına,sağ altına ve altına olmak üzere 3 tane piksel ekleyip, değerlerini de o pikselle aynı yapmak. Yani o pikselin değeri yeni imgede 4 pikselde olacak. Tabi bu yöntemde çıkan imge biraz kalitesiz olacak. Çözünürlüğü düşük gibi gelecek bize. Matlab kodlarımız;
Orijinal imge:
Program çıktısı:
Bakarsanız kenarlarda, keskin yerlerde düşük çözünürlük gibi görünen yerler var. 2. yol: Bu sefer yapacağımız şey ise şöyle. Eklenen bir piksel değerini doğrudan yanındakinden kopyalamak yerine diğer taraftaki pikselinkiyle ortalamasını alıyoruz.
Orijinal imge deminkiyle aynı. Çıktı:
İlk bakışta farkedilmese de incelerseniz farkı görebilirsiniz. Tabi biz sadece 2X zoom yaptık. Daha yüksek oranlarda kalite farkı daha belirgin olacaktır. Oldu iyi imge işlemeler. |







18 Aralık, 2007 saat 20:23
18 Aralık, 2007 saat 21:39
internette yeterinde türkçe bilgi de var inan. yeterince araştırmak lazım sadece.
clear all: tüm verileri temizler, tüm verileri sıfırlar.
close all: açılmış tüm pencereleri kapatır. (grafik, imge)
clc: clear command window, komut penceresini temizler.
kolay gelsini…
22 Şubat, 2008 saat 03:55
Merhabalar Emrah,
İmge ve Görüntü işleme üstüne yazılar okumak çok güzel. Yazılarının devamını bekliyoruz. Yazında geçmediği için yazmak istedim: Matlab İmge İşleme Araçkutusu ile halihazırda imresize fonksiyonu geliyor. O da kullanılabilir, daha hızlı olması açısından. Hem daha ayrıntılı seçenekleri var. Örneğin senin kodun ile resmi küçültmek istersek tersten düşüneceğiz ve tekrardan yazacağız. O yüzden bu kodları fonksiyonlar halinde ve parametrik olarak çağırılabilen halde yapmak daha faydalı sanırım.
Benzer şeyleri resim kesme yazın için de söyleyebiliriz: imcrop fonksiyonu da kullanılabilir.
Ayrıca kodlarına dikkat ettim, içiçe for döngüsü kullanıyorsun ve matris değişkenlerini baştan zeros(satirSayisi, sutunSayisi) ile yaratmıyorsun. Büyük bir proje yazarsan bu şekilde çalışmak zor olabilir. Matrisin her büyüdüğünde dinamik olarak genişletilecek ve bu çok zaman yiyecek. Matlab kodunun daha verimli çalışması için vektörel indeksleme kullanmak ve for döngülerinden kaçmaya özen göstermek gerekiyor. İlgini çekerse: http://www.cmpe.boun.edu.tr/~ari/index.php/2007/12/31/matlab-programlamaya-giris/
Saygılar, sevgiler…
22 Şubat, 2008 saat 11:42
zeros ile matris açmanın performansı etkileyeceğini hiç düşünmemiştim daha önce. çok mantıklı evet. bundan sonra öyle çalışayım. önerileriniz için teşekkürler.
sitenizin RSS’ini de ekledim, takipteyim efenim.