R’da Resimlerin Kontur Çizgilerini Açığa Çıkarma
Merhabalar!
Bu yazıda R Bloggers’ta yer alan ve image.ContourDetector
paketi kullanımını anlatan post yardımı ile bu paketi kullanarak ufak bir örnek yapacağım.
İlk olarak image.ContourDetector
ve magick
paketlerini CRAN’dan bilgisayarımıza indiriyoruz.
image.ContourDetector
paketi resimlere Unsupervised Smooth Contour Line Detection metodu uygulararak kontur çizgilerini açığa çıkarıyor.
magick
paketi yüksek kalite resim işleme süreçlerini modernize eden ve kolaylaştıran bir paket. Detaylı örnek için buraya tıklayabilirsiniz
install.packages("image.ContourDetector")
install.packages("magick")
Paketleri yükledikten sonra paketlerimizi library()
komutu ile çağırıyoruz.
library("image.ContourDetector")
library("magick")
Daha sonra magick
paketi içinde bulunan image_read()
komutu ile herhangi bir bağlantıda yer alan resmimizi okutuyoruz.
Not: Kendi bilgisayarınızdan da resim yükleyebilirsiniz.
img <- image_read("https://i.pinimg.com/originals/44/3e/f0/443ef0d0c43016259b1d4dceb9bb2be6.jpg")
print(img)## format width height colorspace matte filesize density
## 1 JPEG 790 1024 sRGB FALSE 94008 72x72
Bir sonraki adımda resmimizi gri channels = "gray"
argümanını kullanarak ölçeğe oturtuyoruz.
mat <- image_data(img, channels = "gray")
Daha sonra bu resmimizin piksellerinin integer haline getiriyordum.
mat <- as.integer(mat, transpose = TRUE)
dim(mat)## [1] 1024 790 1
Integer hale getirdikten sonra piksellerimizin boyutları içinde tek bir “level”a sahip olan bir “array” var. Bunu dim(mat) dropdim(mat)
komutu ile yok ediyoruz.
mat <- drop(mat)
dim(mat)## [1] 1024 790
Artık resmimiz kontur çizgilerinin ayırt edilmesi için hazır. Çizgileri elde etmek için image.ContourDetector
paketi içindeki image_contour_detector
fonksiyonunu kullanıyoruz.
contourlines <- image_contour_detector(mat)
Daha sonra elde edilen çizgilerimizi plot
komutu yardımı ile görselleştiriyoruz.
plt <- plot(contourlines)
image_contour_detector
fonksiyonu içinde Q ile gösterilen ve sayısal olarak belirtilen bir piksek kuantizasyon argümanına sahiptir. Kuantiazsyon kısaca bir dizi değerin tek bir kuantum değerine sıkıştırılmasıyla elde edilen kayıplı bir sıkıştırma tekniğidir.
Şimdi farklı Q değerleri için kontur çizgilerimize bakalım.
Q=0
contourlines <- image_contour_detector(mat, Q = 0)
plot(contourlines)
Q=1
contourlines <- image_contour_detector(mat, Q = 1)
plot(contourlines)
Q=2
contourlines <- image_contour_detector(mat, Q = 2)
plot(contourlines)
Q=3
contourlines <- image_contour_detector(mat, Q = 3)
plot(contourlines)
Q=4
contourlines <- image_contour_detector(mat, Q = 4)
plot(contourlines)
Q=5
contourlines <- image_contour_detector(mat, Q = 5)
plot(contourlines)
Soru ve görüşleriniz için ozancan@metu.edu.tr.