R’da Resimlerin Kontur Çizgilerini Açığa Çıkarma

Ozancan Özdemir
3 min readAug 10, 2020

--

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.

--

--

Ozancan Özdemir

PhD Candidate at University of Groningen | Data Science&R Enthusiast #rstats | Ankara-Groningen | Galatasaray |