Watermarking Digital

Galan Ramadan Harya Galib

26 April 2021

Set Lokasi Kerja

Seperti biasa untuk pertama-tama kita harus set lokasi kerja dari Markdown kita terlebih dahulu.

setwd("C:/Users/glnrmdan/Documents/R/Watermarking")
library(EBImage)

Reading Image

Lakukan Reading Image terhadap gambar yang sudah kita siapkan sebelumnya. Disini saya menggunakan gambar Logo UIN Malang yang kemudian saya simpan kedalam dataset yang bernama img1.

img1 <- readImage('Logo.jpg')
display(img1, method="raster")

print(img1)
## Image 
##   colorMode    : Color 
##   storage.mode : double 
##   dim          : 1000 981 3 
##   frames.total : 3 
##   frames.render: 1 
## 
## imageData(object)[1:5,1:6,1]
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    1    1    1    1    1    1
## [2,]    1    1    1    1    1    1
## [3,]    1    1    1    1    1    1
## [4,]    1    1    1    1    1    1
## [5,]    1    1    1    1    1    1

Beri Text

Setelah melakukan Reading Image kita mulai proses Watermarking Digital. Berikan text kedalam logo tersebut lalu simpan menjadi gambar baru. Disini saya simpan gambar yang telah diberi text dengan nama “relogo.jpg”

display(img1, method="raster")
text(x = 850, y = 810, label = "Logo", adj = c(2,2), col = "#00964A", cex = 3)
text(x = 855, y = 815, label = "Logoo", adj = c(2,2), col = "#00964A", cex = 3)
text(x = 860, y = 820, label = "Logooo", adj = c(2,2), col = "#00964A", cex = 3)

colorMode(img1) = Color
filename = "relogo.jpg"
dev.print(jpeg, filename = filename, width = dim(img1)[1], height = dim(img1)[2])
## png 
##   2

Load Img After Process

Lalu kita tampilkan gambar yang sudah diberi watermark tadi.

img2 <- readImage('relogo.jpg')
display(img2, method="raster")

print(img2)
## Image 
##   colorMode    : Color 
##   storage.mode : double 
##   dim          : 1000 981 3 
##   frames.total : 3 
##   frames.render: 1 
## 
## imageData(object)[1:5,1:6,1]
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    1    1    1    1    1    1
## [2,]    1    1    1    1    1    1
## [3,]    1    1    1    1    1    1
## [4,]    1    1    1    1    1    1
## [5,]    1    1    1    1    1    1

Pembuktian

Beri Tanda

Sebagai pembuktian pertama mari kita lihat lingkaran merah yang ada dibawah kanan tersebut. Didalam tanda lingkaran kanan tersebutlah letah dari tulisan watermark kita.

img3 <- readImage('logomarked.jpg')
display(img3, method="raster")

Tampilkan Data Histogram

Selanjutnya mari kita buktikan dengan menggunakan historgram. Tampak data dari kedua histogram antara “img1” dan “img2” memiliki tinggi yang berbeda. Ini artinya intesitas warna didalam pikselnya juga berbeda

hist(img1)

hist(img2)

Tampilkan Data Matrix Img

Untuk lebih detailnya kita bisa juga buktikan dengan menampilkan matrix untuk membandingkan numeric pixel dari gambar yang belum dan sudah diberi watermark.

img1_data <- as.numeric(img1)
img1_data[497:505]
## [1] 0.8941176 0.6156863 0.6352941 0.6509804 0.6627451 0.6627451 0.6627451
## [8] 0.9294118 1.0000000
img2_data <- as.numeric(img2)
img2_data[497:505]
## [1] 0.9333333 0.7254902 0.6039216 0.6509804 0.6745098 0.6313725 0.6627451
## [8] 0.7686275 0.9490196

Dapat dilihat diatas bahwa matrix dari kedua gambar berbeda.

Tampil Matrix Panjang

Dan ini adalah matrix yang versi lebih panjang. Sebenarnya matrix ini memiliki hingga mencapai 100.000 baris, namun hanya ditampilkan beberapa baris saja disini agar websitenya tidak terlalu panjang. Nanti kalian bisa mencobanya sendiri di R console kalian untuk melihat seberapa panjang matrix dari suatu gambar.

Data Matrix Gambar 1

img1_data[450:550]
##   [1] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##   [8] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [15] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [22] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 0.9960784 1.0000000
##  [29] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [36] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [43] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 0.8941176 0.6156863
##  [50] 0.6352941 0.6509804 0.6627451 0.6627451 0.6627451 0.9294118 1.0000000
##  [57] 0.9960784 1.0000000 1.0000000 0.9960784 0.9960784 1.0000000 1.0000000
##  [64] 0.9960784 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [71] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [78] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [85] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [92] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [99] 1.0000000 1.0000000 1.0000000

Data Matrix Gambar 2

img2_data[450:550]
##   [1] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##   [8] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [15] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [22] 1.0000000 1.0000000 1.0000000 1.0000000 0.9882353 0.9882353 0.9921569
##  [29] 0.9960784 0.9960784 0.9882353 1.0000000 0.9960784 1.0000000 1.0000000
##  [36] 1.0000000 0.9725490 0.9921569 1.0000000 0.9960784 0.9882353 1.0000000
##  [43] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 0.9333333 0.7254902
##  [50] 0.6039216 0.6509804 0.6745098 0.6313725 0.6627451 0.7686275 0.9490196
##  [57] 0.9882353 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [64] 1.0000000 0.9921569 0.9803922 0.9921569 1.0000000 1.0000000 1.0000000
##  [71] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [78] 1.0000000 0.9960784 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [85] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [92] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
##  [99] 1.0000000 1.0000000 1.0000000