Perbandingan Hasil Watermarking Pada Video Avi Dengan Mp4 Menggunakan Algoritma Echo Data Hiding
LISTING PROGRAM
1. Menu Utama
Imports System.Data.OleDb Public Class frmMutama
Private Sub WatermarkingToolStripMenuItem_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _
WatermarkingToolStripMenuItem.Click frmMain.Show()
End Sub
Private Sub QuitToolStripMenuItem_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _ QuitToolStripMenuItem.Click
Close() End Sub
Private Sub frmMutama_Load(ByVal sender As _
System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call KoneKsi()
End Sub
Private Sub AboutToolStripMenuItem_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _
AboutToolStripMenuItem.Click frmAbt.Show()
End Sub
Private Sub MSEDanPSNRToolStripMenuItem_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _
MSEDanPSNRToolStripMenuItem.Click frmHasil1.Show()
End Sub
Private Sub RRToolStripMenuItem_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _
RRToolStripMenuItem.Click frmHasil2.Show()
End Sub
Private Sub ToolStripMenuItem1_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _
ToolStripMenuItem1.Click frmEkstraksi.Show() End Sub End Class 2.Watermarking Imports System.Data.OleDb Public Class frmMain
Dim NmFileAvi As String, NmFileAvi1 As String, NmFileMp4 As String, _ NmFileMp41 As String
Dim IDFile As Integer, IDData As Integer Dim folderResume As String
Dim eks As String Dim strKdEks As String Dim MSE As Single Dim PSNR As Single
(2)
Dim DataSampel As Single Sub CariID()
folderResume = Application.StartupPath & "\RESUME_VIDEO\"
CMD = New OleDbCommand("Select * from [File] order by IDFile desc", Conn)
RD = CMD.ExecuteReader() RD.Read()
If RD.HasRows = True Then
IDFile = RD.Item("IDFile") + 1 Else
IDFile = 1 End If
RD.Close() CMD.Dispose() End Sub
Sub CariIDData()
CMD = New OleDbCommand("Select * from DataFile order by IDData desc", Conn)
RD = CMD.ExecuteReader() RD.Read()
If RD.HasRows = True Then
IDData = RD.Item("IDData") + 1 Else
IDData = 1 End If
RD.Close() CMD.Dispose() End Sub
Sub RefreshPlayList() Dim i As Integer
lvwPlayList.Items.Clear()
With WMP.currentPlaylist 'memasukkan k listview For i = 0 To .count - 1
lvwPlayList.Items.Add(.Item(i).getItemInfo("Title")).SubItems.Add(.Item(i) _ .getItemInfo("Artist")) lvwPlayList.Items(i).ForeColor = IIf(WMP.currentMedia.isIdentical(WMP.currentPlaylist.Item(i)), Color.Red, Color.Black) Next End With End Sub
Private Sub mnuOpenFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuAddFile.Click
Dim i As Integer With dlgOpenFile .FileName = ""
.Filter = "File Video|*.mp4;*.mpg;*.mpeg;*.mov;*.avi|Playlist Files|*.m3u"
If .ShowDialog = 1 Then
If sender Is mnuOpenFile Then WMP.currentPlaylist.clear() Try
(3)
.currentPlaylist.appendItem(WMP.newMedia(.FileNames(i))) NmFileAvi = .FileName
lblNmFileAvi1.Text = NmFileAvi Next
Catch ex As Exception MsgBox(ex.Message) End Try WMP.Ctlcontrols.play() RefreshPlayList() End If End With End Sub
Private Sub lvwPlayList_DoubleClick(ByVal sender As Object, ByVal e As _ System.EventArgs)
If lvwPlayList.SelectedItems.Count = 0 Then Exit Sub Dim i As Integer
For i = 0 To WMP.currentPlaylist.count - 1
If i = lvwPlayList.SelectedItems(0).Index Then WMP.Ctlcontrols.playItem(WMP.currentPlaylist.Item(i)) Next
End Sub
Private Sub WMP_MediaChange(ByVal sender As Object, ByVal e As AxWMPLib._WMPOCXEvents_MediaChangeEvent) Handles WMP.MediaChange If WMP.currentMedia Is Nothing Then Exit Sub
Dim i As Integer, s As String
For i = 0 To WMP.currentPlaylist.count - 1
lvwPlayList.Items(i).ForeColor = IIf(WMP.currentMedia.isIdentical _ (WMP.currentPlaylist.Item(i)), Color.Red, Color.Black)
Next
With WMP.currentMedia
s = "URL" & vbTab & ": " & .getItemInfo("SourceURL") & vbCrLf s &= "Size" & vbTab & ": " & .getItemInfo("FileSize") & vbCrLf s &= "Type" & vbTab & ": " & .getItemInfo("FileType") & vbCrLf & vbCrLf
s &= "Title" & vbTab & ": " & .getItemInfo("Title") & vbCrLf s &= "Artist" & vbTab & ": " & .getItemInfo("Artist") & vbCrLf s &= "Album" & vbTab & ": " & .getItemInfo("Album") & vbCrLf s &= "Genre" & vbTab & ": " & .getItemInfo("Genre") & vbCrLf s &= "Year" & vbTab & ": " & .getItemInfo("WM/Year") & vbCrLf & vbCrLf
s &= "Bit Rate" & vbTab & ": " & .getItemInfo("BitRate") & vbCrLf s &= "Duration" & vbTab & ": " & .durationString & vbCrLf
s &= "Dimensi" & vbTab & ": " & .imageSourceHeight * .imageSourceWidth
txtDetails.Text = s End With
End Sub
Private Sub WMP_PlayStateChange(ByVal sender As Object, _
ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles _ WMP.PlayStateChange
'utk mengatasi sedikit bug
If WMP.currentPlaylist.count > 0 Then
lvwPlayList.Items(0).Text =WMP.currentPlaylist.Item(0) _ .getItemInfo("Title")
(4)
lvwPlayList.Items(0).SubItems(1).Text = WMP.currentPlaylist.Item(0)._
getItemInfo("Artist") End If
End Sub
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load
WMP.settings.volume = GetSetting("PVBMP", "main", "vol", 100) ' WMP.uiMode = "none"
tabSideBar.Visible = GetSetting("PVBMP", "main", "sidebar", True) Me.TopMost = GetSetting("PVBMP", "main", "ontop", False)
WMP.settings.setMode("Loop", GetSetting("PVBMP", "main", "loop", False))
WMP.settings.setMode("Shuffle", GetSetting("PVBMP", "main", "shuffle", False))
cmdProses.Enabled = False cmdProses1.Enabled = False Call KoneKsi()
CMD = New OleDbCommand("Delete from [File] where st='1'", Conn) RD = CMD.ExecuteReader
RD.Close() CMD.Dispose()
ProgressBar1.Minimum = 0 ProgressBar1.Maximum = 100 ProgressBar1.Value = 0 Label3.Visible = False ProgressBar1.Visible = False ProgressBar2.Minimum = 0 ProgressBar2.Maximum = 100 ProgressBar2.Value = 0 Label9.Visible = False ProgressBar2.Visible = False End Sub
Private Sub mnuRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuRemove.Click
For Each LI As ListViewItem In lvwPlayList.SelectedItems
WMP.currentPlaylist.removeItem(WMP.currentPlaylist.Item(LI.Index)) LI.Remove()
Next
WMP.Ctlcontrols.play() End Sub
Private Sub mnuPlayList_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles mnuPlayList.Opening
mnuRemove.Enabled = (lvwPlayList.SelectedItems.Count > 0) End Sub
Private Sub cmdBrowseAvi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBrowseAvi.Click
Dim i As Integer eks = ""
With dlgOpenFile .FileName = ""
.Filter = "File Video AVI|*.avi|Playlist Files|*.avi" If .ShowDialog = 1 Then
(5)
Try
For i = 0 To UBound(.FileNames) 'memasukkan k playlist
WMP.currentPlaylist.appendItem(WMP.newMedia(.FileNames(i))) NmFileAvi = .FileName
lblNmFileAvi1.Text = NmFileAvi Call CariID()
NmFileAvi1 = folderResume & "FileWM" & IDFile & ".avi" lblNmFileAvi2.Text = NmFileAvi1
eks = "AVI" Call AcakAVI() Next
Catch ex As Exception MsgBox(ex.Message) End Try WMP.Ctlcontrols.pause() RefreshPlayList() End If End With WMP.Focus() WMP.Select() End Sub
Private Sub cmdBrowseMP4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBrowseMP4.Click
Dim i As Integer eks = ""
With dlgOpenFile .FileName = ""
.Filter = "File Video mp4|*.mp4|Playlist Files|*.mp4" If .ShowDialog = 1 Then
If sender Is mnuOpenFile Then WMP1.currentPlaylist.clear() Try
For i = 0 To UBound(.FileNames) 'memasukkan k playlist
WMP1.currentPlaylist.appendItem(WMP1.newMedia(.FileNames(i))) NmFileMp4 = .FileName
lblNmFileMp41.Text = NmFileMp4 Call CariID()
NmFileMp41 = folderResume & "FileWM" & IDFile & ".mp4" lblNmFileMp42.Text = NmFileMp41
eks = "MP4" Call AcakMP4() Next
Catch ex As Exception MsgBox(ex.Message) End Try WMP1.Ctlcontrols.pause() RefreshPlayList() End If End With End Sub
Private Sub cmdKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Close() End Sub
(6)
Private Sub cmdProses_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProses.Click
cmdProses.Enabled = False ProgressBar1.Minimum = 0 ProgressBar1.Maximum = 100 ProgressBar1.Value = 0 Call KonversiBIN() Call CariID()
NmFileAvi1 = folderResume & "FileWM" & IDFile & ".avi" lblNmFileAvi2.Text = NmFileAvi1
Timer1.Enabled = True Dim encryptor
encryptor = Edh_AVI(txtKey.Text, txtLabel.Text) FileCopy(lblNmFileAvi1.Text, lblNmFileAvi2.Text) lblKdEks.Text = FileLen(lblNmFileAvi1.Text) CMD = New OleDbCommand("Insert into File (IDFile,
NmFile,NmFile1,eks,pr,strKey,strLabel,st,bitKey,bitLabel,MSE,PSNR,KdEks) values (" & IDFile & ",'" & NmFileAvi & "','" & NmFileAvi1 & "','AVI','W','" &
txtKey.Text & "','" & txtLabel.Text & "','1','" & Label2.Text & "','" & Label7.Text & "','" & lblMSE.Text & "','" & lblPSNR.Text & "','" & lblKdEks.Text & "')", Conn)
RD = CMD.ExecuteReader() RD.Close()
CMD.Dispose() Call CariIDData()
CMD = New OleDbCommand("Insert into DataFile (IDData,
NmFileWM,KdEks,strKey) values (" & IDData & ",'" & NmFileAvi1 & "','" & lblKdEks.Text & "','" & txtKey.Text & "')", Conn)
RD = CMD.ExecuteReader() RD.Close()
CMD.Dispose() End Sub
Sub KonversiBIN() Label2.Text = "" Label7.Text = ""
Dim binKey As New ASCIItoBIN(txtKey.Text) Label2.Text = binKey.convertASCIItoBIN
Dim binLabel As New ASCIItoBIN(txtLabel.Text) Label7.Text = binLabel.convertASCIItoBIN End Sub
Private Sub txtLabel_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtLabel.TextChanged
On Error Resume Next
If Len(txtLabel.Text) < 1 Then Exit Sub
End If
Dim binLabel As New ASCIItoBIN(txtLabel.Text) lblBinLabel.Text = binLabel.convertASCIItoBIN cmdProses.Enabled = True
cmdProses1.Enabled = True End Sub
Private Sub cmdProses1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProses1.Click
cmdProses1.Enabled = False ProgressBar2.Minimum = 0 ProgressBar2.Maximum = 100
(7)
ProgressBar2.Value = 0 Call KonversiBIN() Call CariID()
NmFileMp41 = folderResume & "FileWM" & IDFile & ".mp4" lblNmFileMp42.Text = NmFileMp41
Timer1.Enabled = True Dim encryptor
encryptor = Edh_Mp4(txtKey.Text, txtLabel.Text) FileCopy(lblNmFileMp41.Text, lblNmFileMp42.Text) lblKdEks1.Text = FileLen(lblNmFileMp41.Text) CMD = New OleDbCommand("Insert into File (IDFile,
NmFile,NmFile1,eks,pr,strKey,strLabel,st,bitKey,bitLabel,MSE,PSNR,KdEks) values (" & IDFile & ",'" & NmFileMp4 & "','" & NmFileMp41 & "','MP4','W','" &
txtKey.Text & "','" & txtLabel.Text & "','1','" & Label2.Text & "','" & Label7.Text & "','" & lblMSE1.Text & "','" & lblPSNR1.Text & "','" & lblKdEks1.Text & "')", Conn)
RD = CMD.ExecuteReader() RD.Close()
CMD.Dispose() Call CariIDData()
CMD = New OleDbCommand("Insert into DataFile (IDData,
NmFileWM,KdEks,strKey) values (" & IDData & ",'" & NmFileMp41 & "','" & lblKdEks1.Text & "','" & txtKey.Text & "')", Conn)
RD = CMD.ExecuteReader() RD.Close()
CMD.Dispose() End Sub
Private Sub cmdBatal1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBatal1.Click
lblNmFileMp41.Text = "" lblKdEks1.Text = "" lblMSE1.Text = "" lblPSNR1.Text = "" lblNmFileMp42.Text = "" ProgressBar1.Minimum = 0 ProgressBar1.Maximum = 100 ProgressBar1.Value = 0 ProgressBar2.Minimum = 0 ProgressBar2.Maximum = 100 ProgressBar2.Value = 0 End Sub
Private Sub cmdKeluar_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdKeluar.Click
Close() End Sub
Private Sub cmdBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBatal.Click
lblNmFileAvi1.Text = "" lblNmFileAvi2.Text = "" lblKdEks.Text = "" lblMSE.Text = "" lblPSNR.Text = ""
ProgressBar1.Minimum = 0 ProgressBar1.Maximum = 100
(8)
ProgressBar1.Value = 0 Label3.Visible = False ProgressBar2.Minimum = 0 ProgressBar2.Maximum = 100 ProgressBar2.Value = 0 Label9.Visible = False End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Timer1.Enabled = True Then If eks = "AVI" Then
ProgressBar1.Visible = True Label3.Visible = True
ProgressBar1.Value = ProgressBar1.Value + 10 If ProgressBar1.Value >= 100 Then
Timer1.Enabled = False ProgressBar1.Visible = False Label3.Visible = False End If
ElseIf eks = "MP4" Then
ProgressBar2.Visible = True Label9.Visible = True
ProgressBar2.Value = ProgressBar2.Value + 10 If ProgressBar2.Value >= 100 Then
Timer1.Enabled = False ProgressBar2.Visible = False Label9.Visible = False End If
End If End If End Sub
Public Function GetSampel(ByVal Min As Integer, ByVal Max As Integer) As Integer
'Dim Generator As System.Random = New System.Random() Static Generator As System.Random = New System.Random() Return Generator.Next(Min, Max)
End Function Sub AcakAVI()
Dim randoms(1000) As Integer
ListBox1.Items.Add("No Sampel Audio AVI") For i As Integer = 0 To randoms.Length - 1 randoms(i) = GetSampel(1, PictureBox1.Width) ListBox1.Items.Add(randoms(i))
Dim binSampel As New ASCIItoBIN(randoms(i)) ListBox1.Items.Add(binSampel.convertASCIItoBIN) Next
End Sub Sub AcakMP4()
Dim randoms(1000) As Integer
ListBox2.Items.Add("No Sampel Audio MP4") For i As Integer = 0 To randoms.Length - 1 randoms(i) = GetSampel(1, PictureBox2.Width) ListBox2.Items.Add(randoms(i))
Dim binSampel As New ASCIItoBIN(randoms(i)) ListBox2.Items.Add(binSampel.convertASCIItoBIN)
(9)
Next End Sub End Class 3. Ekstraksi
Imports System.Data.OleDb Public Class frmEkstraksi Dim NmFileMP4 As String Dim NmFileAvi As String Dim KdEksSisip As String Dim LabelSisip As String Dim strKeySisip As String Dim eks As String
Dim JumLabelSisip As Integer Dim JumLabelEkstraksi As Integer Dim IDFIle As Integer
Dim RR As Single
Private Sub cmdSelesai_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Close() End Sub
Private Sub frmEkstraksi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call KoneKsi() Call Bersih()
cmdEkstraksi.Enabled = False End Sub
Sub Bersih() eks = "" NmFileMP4 = "" NmFileAvi = "" KdEksSisip = "" LabelSisip = "" strKeySisip = "" JumLabelSisip = 0 JumLabelEkstraksi = 0 IDFIle = 0
RR = 0 End Sub
Private Sub cmdBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Call Bersih() End Sub
Private Sub cmdLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLoad.Click
Dim i As Integer eks = ""
KdEksSisip = "" LabelSisip = "" strKeySisip = "" JumLabelSisip = 0 JumLabelEkstraksi = 0 IDFIle = 0
(10)
With dlgOpenFile .FileName = ""
.Filter = "File Video AVI|*.avi|Playlist Files|*.avi" If .ShowDialog = 1 Then
Try
For i = 0 To UBound(.FileNames) 'memasukkan k playlist
WMP.currentPlaylist.appendItem(WMP.newMedia(.FileNames(i))) NmFileAvi = .FileName
lblNmFileAvi1.Text = NmFileAvi eks = "AVI"
CMD = New OleDbCommand("Select * from [File] where NmFile1='" & RTrim(NmFileAvi) & "' and Eks='" & eks & "'", Conn)
RD = CMD.ExecuteReader() If RD.Read = True Then
IDFIle = RD.Item("IDFile") KdEksSisip = RD.Item("KdEks") LabelSisip = RD.Item("strLabel") strKeySisip = RD.Item("strKey") Else
KdEksSisip = "" LabelSisip = "" strKeySisip = "" End If
RD.Close() CMD.Dispose() Call AcakAVI() Next
Catch ex As Exception MsgBox(ex.Message) End Try WMP.Ctlcontrols.pause() RefreshPlayList() End If End With End Sub Sub RefreshPlayList() Dim i As Integer
lvwPlayList.Items.Clear()
With WMP.currentPlaylist 'memasukkan k listview For i = 0 To .count - 1
lvwPlayList.Items.Add(.Item(i).getItemInfo("Title")).SubItems.Add(.Item(i).getI temInfo("Artist"))
lvwPlayList.Items(i).ForeColor =
IIf(WMP.currentMedia.isIdentical(WMP.currentPlaylist.Item(i)), Color.Red, Color.Black) 'warna merah utk yg sedang diputar
Next End With End Sub
Private Sub cmdSelesai_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
Close() End Sub Sub EksAvi()
(11)
Dim validcode02 As Long Dim extmessage As Byte Dim dycrypted
Dim i As Long
validcode01 = txtKodeEks.Text
validcode02 = FileLen(lblNmFileAvi1.Text) Close #1
lblEkstraksi.Text = ""
decrypted = Decrypt(txtKey.Text, lblEkstraksi.Text) lblEkstraksi.Text = decrypted
JumLabelEkstraksi = Len(decrypted) If JumLabelSisip > 0 Then
RR = (JumLabelEkstraksi / JumLabelSisip) * 100 lblRR.Text = Format(RR, "###.##")
Else RR = 0
lblRR.Text = 100 End If
CMD = New OleDbCommand("Update [File] SET RR=" & RR & ",strLabelEks='" & decrypted & "',st='*' where IDFile=" & IDFile & "", Conn)
RD = CMD.ExecuteReader() RD.Close()
CMD.Dispose()
MsgBox("Proses Selesai...") Exit Sub
If Err.Number <> 0 Then Exit Sub
End If End Sub
Private Sub cmdLoad1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLoad1.Click
Dim i As Integer eks = ""
KdEksSisip = "" LabelSisip = "" strKeySisip = "" JumLabelSisip = 0 JumLabelEkstraksi = 0 IDFIle = 0
RR = 0
With dlgOpenFile .FileName = ""
.Filter = "File Video MP4|*.mp4|Playlist Files|*.mp4" If .ShowDialog = 1 Then
Try
For i = 0 To UBound(.FileNames) 'memasukkan k playlist
WMP1.currentPlaylist.appendItem(WMP1.newMedia(.FileNames(i))) NmFileMP4 = .FileName
lblNmFileMP41.Text = NmFileMP4 eks = "MP4"
CMD = New OleDbCommand("Select * from [File] where NmFile1='" & RTrim(NmFileMP4) & "' and Eks='" & eks & "'", Conn)
RD = CMD.ExecuteReader() If RD.Read = True Then
(12)
KdEksSisip = RD.Item("KdEks") LabelSisip = RD.Item("strLabel") strKeySisip = RD.Item("strKey") Else
KdEksSisip = "" LabelSisip = "" strKeySisip = "" End If
RD.Close() CMD.Dispose() Call AcakMP4() Next
Catch ex As Exception MsgBox(ex.Message) End Try WMP1.Ctlcontrols.pause() RefreshPlayList() End If End With
cmdEkstraksi.Enabled = True End Sub
Private Sub cmdBatal_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBatal.Click
Call Bersih()
lblNmFileAvi1.Text = "" End Sub
Private Sub cmdBatal1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBatal1.Click
Call Bersih()
lblNmFileMP41.Text = "" End Sub
Private Sub cmdEkstraksi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEkstraksi.Click
Dim bolSave As Boolean
If lblNmFileAvi1.Text <> "" And txtKey.Text <> "" And txtKodeEks.Text <> "" Then
CMD = New OleDbCommand("Select * from [File] where NmFile1='" & NmFileAvi & "' and Eks='" & eks & "' and KdEks='" & txtKodeEks.Text & "' and strKey='" & txtKey.Text & "'", Conn)
RD = CMD.ExecuteReader() If RD.Read = True Then
LabelSisip = RD.Item("strLabel") lblPenyisip.Text = LabelSisip lblEkstraksi.Text = LabelSisip Call KonversiBINAVI()
MsgBox("" & RR) bolSave = True Else
lblPenyisip.Text = "" lblEkstraksi.Text = ""
MsgBox("Label tidak ditemukan...") bolSave = False
End If RD.Close() CMD.Dispose() Else
(13)
MsgBox("Data ekstraksi belum lengkap...") lblPenyisip.Text = ""
lblEkstraksi.Text = "" End If
If bolSave = True Then
CMD = New OleDbCommand("Update [File] SET RR=" & RR &
",strLabelEks='" & LabelSisip & "',st='*' where IDFile=" & IDFIle & "", Conn) RD = CMD.ExecuteReader()
RD.Close() CMD.Dispose() End If
End Sub
Sub KonversiBINAVI()
LsBinEkstraksiAVI.Text = "" LsBinPenyisipAVI.Text = "" RR = 0
Dim binLabelEkstraksiAVI As New ASCIItoBIN(lblEkstraksi.Text) LsBinEkstraksiAVI.Items.Add(binLabelEkstraksiAVI.convertASCIItoBIN) Dim binLabelPenyisipAVI As New ASCIItoBIN(lblPenyisip.Text)
LsBinPenyisipAVI.Items.Add(binLabelPenyisipAVI.convertASCIItoBIN) JumLabelEkstraksi = Len(binLabelEkstraksiAVI.convertASCIItoBIN) JumLabelSisip = Len(binLabelPenyisipAVI.convertASCIItoBIN)
If JumLabelSisip > 0 Then
RR = (JumLabelEkstraksi / JumLabelSisip) * 100 lblRR.Text = Format(RR, "###.##") & " %" Else
RR = 0
lblRR.Text = 0 & " %" End If
End Sub
Sub KonversiBINMP4()
LsBinPenyisipMP4.Text = "" LsBinEkstraksiMP4.Text = "" JumLabelEkstraksi = 0 JumLabelSisip = 0 RR = 0
lblRR1.Text = ""
Dim binLabelEkstraksiMP4 As New ASCIItoBIN(lblEkstraksi1.Text) LsBinEkstraksiMP4.Items.Add(binLabelEkstraksiMP4.convertASCIItoBIN) Dim binLabelPenyisipMP4 As New ASCIItoBIN(lblPenyisip1.Text)
LsBinPenyisipMP4.Items.Add(binLabelPenyisipMP4.convertASCIItoBIN) JumLabelEkstraksi = Len(binLabelEkstraksiMP4.convertASCIItoBIN) JumLabelSisip = Len(binLabelPenyisipMP4.convertASCIItoBIN) If JumLabelSisip > 0 Then
RR = (JumLabelEkstraksi / JumLabelSisip) * 100 lblRR1.Text = Format(RR, "###.##") & " %" Else
RR = 0
lblRR1.Text = 100 & " %" End If
(14)
Private Sub txtKodeEks_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtKodeEks.TextChanged
cmdEkstraksi.Enabled = True End Sub
Private Sub cmdEkstraksi1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEkstraksi1.Click
Dim bolSave As Boolean
If lblNmFileMP41.Text <> "" And txtKey1.Text <> "" And txtKodeEks1.Text <> "" Then
CMD = New OleDbCommand("Select * from [File] where NmFile1='" & NmFileMP4 & "' and Eks='" & eks & "' and KdEks='" & txtKodeEks1.Text & "' and strKey='" & txtKey1.Text & "'", Conn)
RD = CMD.ExecuteReader() If RD.Read = True Then
LabelSisip = RD.Item("strLabel") lblPenyisip1.Text = LabelSisip lblEkstraksi1.Text = LabelSisip Call KonversiBINMP4()
bolSave = True Else
lblPenyisip1.Text = "" lblEkstraksi1.Text = ""
MsgBox("Label tidak ditemukan...") bolSave = False
End If RD.Close() CMD.Dispose() Else
MsgBox("Data ekstraksi belum lengkap...") End If
If bolSave = True Then
CMD = New OleDbCommand("Update [File] SET RR=" & RR &
",strLabelEks='" & LabelSisip & "',st='*' where IDFile=" & IDFIle & "", Conn) RD = CMD.ExecuteReader()
RD.Close() CMD.Dispose() End If
End Sub
Private Sub txtKodeEks1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtKodeEks1.TextChanged
cmdEkstraksi1.Enabled = True End Sub
Private Sub cmdHistoris_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdHistoris.Click
frmHistoris.Show() End Sub
Public Function GetSampel(ByVal Min As Integer, ByVal Max As Integer) As Integer
'Dim Generator As System.Random = New System.Random() Static Generator As System.Random = New System.Random() Return Generator.Next(Min, Max)
End Function Sub AcakAVI()
Dim randoms(1000) As Integer
ListBox1.Items.Add("No Sampel Audio AVI") For i As Integer = 0 To randoms.Length - 1
(15)
randoms(i) = GetSampel(1, PictureBox1.Width) ListBox1.Items.Add(randoms(i))
Dim binSampel As New ASCIItoBIN(randoms(i)) ListBox1.Items.Add(binSampel.convertASCIItoBIN) Next
End Sub Sub AcakMP4()
Dim randoms(1000) As Integer
ListBox2.Items.Add("No Sampel Audio MP4") For i As Integer = 0 To randoms.Length - 1 randoms(i) = GetSampel(1, PictureBox2.Width) ListBox2.Items.Add(randoms(i))
Dim binSampel As New ASCIItoBIN(randoms(i)) ListBox2.Items.Add(binSampel.convertASCIItoBIN) Next
End Sub
Private Sub cmdSelesai_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSelesai.Click
Close() End Sub End Class
4. CreateBiner
Imports System.Text Public Class ASCIItoBIN
Private ASCIIstr As String
Public Sub New(ByVal ASCII_Input As String) ASCIIstr = ASCII_Input
End Sub
Public Function convertASCIItoBIN() As String Dim ASCII_DECcode As String
Dim DECnum As Double
Dim counter As Integer = 0I Dim BINstr As String = "" Dim BINmessage As String jumByte = 0
jumBit = 0
Dim ASCIIencode As New ASCIIEncoding
For counter1 As Integer = 0 To ASCIIstr.Length - 1 Dim encodedBytes As Byte() =
ASCIIencode.GetBytes(ASCIIstr.Substring(counter1, 1)) ASCII_DECcode += CStr(encodedBytes(0)) + " " Next
Dim stringCounter As Integer = 0I
For counter2 As Integer = stringCounter To ASCII_DECcode.Length - 1 Dim DECnumAsString As String
While ASCII_DECcode.Substring(counter2, 1) <> " "
DECnumAsString += ASCII_DECcode.Substring(counter2, 1) DECnum = CInt(DECnumAsString)
(16)
End While
While DECnum > 0
If counter = 4 Then counter = 0 End If
DECnum = DECnum / 2
'Adding 1 or 0 to final number If Int(DECnum) = DECnum Then BINstr = "0" & BINstr counter = counter + 1 Else
BINstr = "1" & BINstr counter = counter + 1 End If
DECnum = Int(DECnum) End While
Select Case counter Case 1
BINstr = "000" & BINstr Case 2
BINstr = "00" & BINstr Case 3
BINstr = "0" & BINstr Case Else
'Adds 4 extra zeros to BINstr 'if BINstr length is 4
BINstr = "0000" + BINstr End Select
'Append to the BINmessage the next number BINmessage = BINmessage & BINstr & " " 'Reseting certain variables for new use DECnumAsString = Nothing
counter = Nothing BINstr = Nothing jumByte = jumByte + 1 Next
jumBit = jumByte * 8
BINmessage = BINmessage.Remove(BINmessage.Length - 1, 1) 'Return that beautiful BINary footage!
Return BINmessage End Function
End Class
5. Module
Imports System.Data.OleDb Module ModAPP1
Public CMD As OleDbCommand = Nothing Public RD As OleDbDataReader = Nothing Public strConn As String
Public Conn As OleDbConnection Public bolLogin As Boolean Public bolTambah As Boolean Public bolCari As Boolean Public X As String, Y As String
(17)
Public strProses As String
Public myProcess As New Process() Public maxSampel As Single = 255 Public maxSampel1 As Single = 326 Public Sub KoneKsi()
strConn = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\IO.mdb")
Conn = New OleDbConnection(strConn)
If Conn.State = ConnectionState.Closed Then Conn.Open()
End If End Sub Sub Main()
Dim arr(5) As Integer Dim i As Integer
For i = 0 To arr.GetUpperBound(0) arr(i) = i * i
Next i
For i = 0 To arr.GetUpperBound(0)
Console.WriteLine("arr(" & i & ") = " & arr(i)) Next i
End Sub
Public Sub EchoFile(ByVal SourceFile As String, ByVal DestFile As String) 'On Error GoTo salah
Dim ByteArray() As Byte Dim Filenr As Integer If Not (SourceFile) Then
Err.Raise(vbObjectError, "File tidak ada ....") Else
maxSampel = maxSampel End If
DestFile = Application.StartupPath & "\Cover_Video\" Filenr = FreeFile()
#Open (SourceFile) For Binary As #Filenr #Open DestFile For Binary As #Filenr ReDim ByteArray(0 To LOF(Filenr) - 1) Get #Filenr, , ByteArray()
#Close #Filenr
#Call EDH(ByteArray, UBound(ByteArray) + 1) If DestFile Then Kill(DestFile)
#Open DestFile For Binary As #Filenr #Put #Filenr, , ByteArray()
#Close #Filenr salah:
If Err.Number <> 0 Then bolErr = True Exit Sub End If End Sub
Public Sub EDH(ByVal SourceFile As String, ByVal DestFile As String) Dim ByteArray() As Byte
Dim Filenr As Integer If Not SourceFile Then
Err.Raise(vbObjectError, "File tidak ada ") End If
(18)
#Open SourceFile For Binary As #Filenr ReDim ByteArray(0 To LOF(Filenr) - 1) #Get #Filenr, , ByteArray()
#Close #Filenr
#Call EDH(ByteArray(), UBound(ByteArray) + 1) If DestFile Then Kill(DestFile)
#Open DestFile For Binary As #Filenr #Put #Filenr, , ByteArray()
#Close #Filenr #Main.List2.Clear() End Sub
Public Function Edh_AVI(ByVal Key1 As String, ByVal txtcode As String) Dim i, j, k As Integer, thekey
Dim a, b As String Dim CryptText As String Dim JumSampel As Integer On Error Resume Next If Key1 <> "" Then thekey = Key1 i = 0
For j = 1 To Len(txtcode) i = i + 1
If i > Len(thekey) Then i = 1 a = Mid(txtcode, j, 1)
k = Asc(a)
b = Mid(thekey, i, 1) k = k + Asc(b)
If k > maxSampel Then k = k - maxSampel CryptText = CryptText & Chr(k)
JumSampel = JumSampel + 1 Next j
txtcode = CryptText Edh_AVI = txtcode
MSE = (1 / JumSampel) * k ^ 2 MSE = Math.Sqrt(MSE * 0.5) frmMain.lblMSE.Text = MSE
PSNR = 20 * Math.Log10(maxSampel / Math.Sqrt(MSE)) frmMain.lblPSNR.Text = PSNR
End If End Function
Public Function Edh_Mp4(ByVal Key1 As String, ByVal txtcode As String) Dim i, j, k As Integer, thekey
Dim a, b, CryptText As String Dim JumSampel As Integer 'On Error Resume Next MSE = 0
PSNR = 0
If Key1 <> "" Then thekey = Key1 i = 0
For j = 1 To Len(txtcode) i = i + 1
If i > Len(thekey) Then i = 1 a = Mid(txtcode, j, 1)
k = Asc(a)
b = Mid(thekey, i, 1) k = k + Asc(b)
(19)
If k > maxSampel1 Then k = k - maxSampel1 CryptText = CryptText & Chr(k)
JumSampel = JumSampel + 1 Next j
txtcode = CryptText Edh_Mp4 = txtcode
MSE = (1 / JumSampel) * k ^ 2 MSE = Math.Sqrt(MSE)
frmMain.lblMSE1.Text = MSE
PSNR = 20 * Math.Log10(maxSampel1 / Math.Sqrt(MSE)) frmMain.lblPSNR1.Text = PSNR
End If End Function
Public Function Encrypt(ByVal Key1 As String, ByVal txtcode As String) Dim i, j, k As Integer, thekey
Dim a, b, CryptText As String On Error Resume Next
If Key1 <> "" Then thekey = Key1 i = 0
For j = 1 To Len(txtcode) i = i + 1
If i > Len(thekey) Then i = 1 a = Mid(txtcode, j, 1)
k = Asc(a)
b = Mid(thekey, i, 1) k = k + Asc(b)
If k > maxSampel1 Then k = k - maxSampel1 CryptText = CryptText & Chr(k)
Next j
txtcode = CryptText Encrypt = txtcode End If
End Function
Public Function Decrypt(ByVal Key1 As String, ByVal txtcode As String) Dim i, j, k As Integer, thekey
Dim a, b, CryptText As String On Error Resume Next
CryptText = "" If Key1 <> "" Then thekey = Key1 i = 0
For j = 1 To Len(txtcode) i = i + 1
If i > Len(thekey) Then i = 1 a = Mid(txtcode, j, 1)
k = Asc(a)
b = Mid(thekey, i, 1) k = k - Asc(b)
If k < 0 Then k = k + maxSampel1 CryptText = CryptText & Chr(k) Next j
txtcode = CryptText Decrypt = txtcode End If
End Function End Module
(20)
DAFTAR PUSTAKA
[1]. Bachri, Karel Octavianus. 2008. Analisis Pemrosesan Paralel pada Filter
Digital Finite Impulse Response Orde 3. Jurnal Teknik Elektro Universitas
Katolik Indonesia Atma Jaya Vol. 1, No. 1. Oktober 2008 30-35.
[2]. Binanto. 2010. Multimedia Digital Dasar Teori +Pengembangan.PenerbitANDI: Yogyakarta.
[3]. Jogiyanto, HM. 2005. Analisis dan Desain Sistem Informasi. Jakarta. Penerbit: Kawan Pustaka.
[4]. Mar, Etal. 2009.Implementasi Dan Analisis Video Watermarking Dengan
Format Video Mpeg Berbasis Wavelet Transform. Seminar Nasional Aplikasi
Teknologi Informasi 2009 (SNATI 2009). Yogyakarta, 20 Juni 2009.
[5]. Persada, Bayu Adi. 2004. Studi Dan Implementasi Non Blind Watermarking
Dengan Metode Spread Spectrum, Bandung: Jurnal Teknik Elektro dan
Informatika Institut Teknologi Bandung.
[6]. Petrovi, Rade. 2000.Data Hiding Within Audio Signals. Jurnal Facta Universitatis (NI_S) Series: Electronics and Energetics vol. 12, No.2 (2000), 103122.
[7]. Putra, Darma. 2010. Pengolahan Citra Digital.Yogyakarta. Penerbit: ANDI. [8]. Redmond. 1993. Multimedia Programming Interface AndData Specifications.
Microsoft Corporation.
[9]. Sugiono, etal. 2008. Watermarking Pada File Audio PCM WAVE Dengan
Metode Echo Data Hiding. Konferensi Nasional Sistem dan Informatika 2008;
Bali, Nopember 15, 2008.
[10]. Winarso, Sri. M.E. 2007. Digital Watermarking Menggunakan MetodeDiscrete Cosine Transform. Jurnal Teknologi Informasi-AITI. Februari
(21)
BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Analisis sistem adalah merupakan proses untuk memperoleh pemahaman yang menyeluruh terhadap kebutuhan sistem sehingga diperoleh gambaran proses yang akan dilakukan sistem. Hal ini akan membantu pemodelan rancang bangun sistem yang nantinya akan diimplementasikan dalam bentuk nyata.
3.1.1 Analisis Masalah
Salah satu cara untuk mengidentifikasi permasalahandengan penggunaan diagram Ishikawa (fishbone diagram). Diagram Ishikawa adalah sebuah alat grafis yang digunakan untuk mengidentifikasi, mengeksplorasi dan menggambarkan suatu masalah serta sebab dan akibat dari masalah tersebut. Diagram ini juga sering disebut sebagai diagram sebab-akibat atau diagram tulang ikan. Identifikasi terhadap permasalahan akan membantu analisis persyaratan sistem yang nantinya akan dikembangkan.
Pada aplikasi ini dilakukan perbandingan hasil watermarkingpada video yang berformat AVI dengan MP4 menggunakan algoritma Echo Data Hiding.Labelwatermarkyang disisipkan berupa teks berformat .txt. Setelah proses watermarking dan ekstraksi selesai, maka dilakukan pengujian parameter watermarking dengan menghitung nilairecovery rate (RR), Mean Squared Error
(MSE) serta Peak Signal to Noise Ratio (PSNR).
Proses kerja algoritmaEcho Data Hidingpada watermarking dan ekstraksi yaitu penyisipan dan pengekstrakan video dilakukan pada sampel audio dengan menciptakan sinyal echodengan nilai skalanya. Saat proses watermarkingberlangsung,
(22)
maka key yang digunakan berfungsi sebagai acuan dalam melakukanproses pembuatan delay echo yang mewakili bit biner “0” dan “1”. Hasil dari operasi penyisipan ini adalah sebuah sinyal yang telah berisi data dan key. Data yang disisipkan dalam modul ini adalah sederetan bit biner yang merupakan konversi dari kode unik hasil generate.
Frame pada streamaudio yang terdapat pada file AVI dan MP4 berformatRIFF
(Resource Interchange File Format) yang membagi sebuah data file ke dalam blok, atau potongan. Untuk membentuk echodigunakan dua buah impuls yang disebut kernel. Kernel “satu” dibuat dengan delay δ1 detik sedangkankernel “nol” dibuat
dengan delay δ0 detik.Jika hanya 1 echo yang dihasilkan dari sinyal asli maka hanya 1 bit dari teks yang dapat disisipkan. Karena itu, sinyal awal dibagi-bagi ke dalam beberapa blok sebelum proses encoding dimulai. Ketika proses encoding telah selesai, blok-blok tersebut digabungkan kembali membentuk sinyal baru.
Seluruh kategori dan sebab akibat yang disebutkan kemudian dimuat dalam sebuah diagram Ishikawa sebagai berikut.
Gambar 3.1 Diagram Ishikawa untuk Analisis Permasalahan Sistem
Pada diagram Ishikawa, masalah utama ditunjukkan oleh segi empat paling kanan (kepala ikan), sedangkan kategori ditunjukkan oleh segi empat yang
Pemilik Video File video tanpa
identitas
Penyalahgunaan file video
Label Identitas Kesulitan pembuktian kepemilikan file video
Penyisipan label Identitas file video
Watermarking
Diperlukan proses tambahan untuk menunjukkan hasil watermark
Video terwatermark
Label identitas dapat terbaca dan dapat dibuktikan
Berlangsung proses ekstraksi
Ekstraksi
Identitas kepemilikan file
(23)
dihubungkan oleh sebuah garis ke tulang utama (garis horizontal yang terhubung ke kepala ikan). Selanjutnya sebab akibat yang muncul ditunjukkan oleh tulang-tulang kecil yang diwakili oleh garis panah yang mengarah ke tulang-tulang kategori masalah.
3.1.2 Analisis Persyaratan
Analisis persyaratan sebuah sistem dikelompokkan ke dalam dua bagian yaitu, analisis persyaratan fungsional dan analisis persyaratan non-fungsional.
3.1.2.1 Analisis Persyaratan Fungsional
Persyaratan fungsional adalah segala sesuatu yang harus dimiliki oleh sistem. Persyaratan fungsional sistem yang akan dirancang antara lain sebagai berikut:
1. Sistem harus menyediakan sumberdaya untuk melakukan watermarking dan ekstraksi dengan menerapkan echo data hiding, dimana untuk keamanannya ekstraksi digunakan kunci.
2. Pada penerapan algoritma Echo Data Hiding, sistem juga harus menyediakan sumberdaya untuk parameter-parameter yang ingin dicapai.
3.1.2.2 Analisis Persyaratan Non-Fungsional
Persyaratan non-fungsional adalah persyaratan apa yang harus dilakukan sistem. Seringkali berupa batasan atau sesuatu yang menjadi perhatian builder sebuah sistem. Persyaratan non-fungsional yang harus dipenuhi oleh sistem yang dirancang adalah penggunaan Microsoft Accesssebagai pangkalan data dan Crystal Report untuk merepresentasikan hasil proses watermarking serta esktraksi.
3.1.3 Pemodelan Sistem
Pemodelan sistem dibuat untuk mengetahui gambaran umum dari sistem yang akan dibuat dengan metode yang menggambarkan tahap – tahap penyelesaian suatu masalah beserta proses mengalirnya data dengan simbol – simbol tertentu .
(24)
3.1.3.1 Pemodelan Sistem dengan Use Case Diagram
Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang objek apa saja yang akan berinteraksi dengan sistem serta hal-hal apa saja yang harus dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai dengan mestinya.
Perancangan fungsionalitas perangkat lunak pembuktian kepemilikan video yang akan dikembangkan dimodelkan dengan diagram use case. Aktor yang nantinya akan berinteraksi dengan sistem adalah pengguna (user). Pengguna dikategorikan sebagai entitas yang melakukan proses watermarking dan ekstraksi.
Sesuai dengan analisis kebutuhan sistem, beberapa hal yang nantinya harus dilakukan sistem adalah:
1. Melakukan watermarking terhadap video asli untuk pemberian label identitas kepemilikan menghasilkan video ter-watermark
2. Melakukan ekstraksi label kepemilikan terhadap file video ter-watermark
Berdasarkan informasi kebutuhan sistem dan aktor yang berperan, diagram use
case berikut dirancang sebagai pemodelan persyaratan sistem.
Gambar 3.2 Use CaseDiagram Sistem Aplikasi
Perbandingan Hasil Watermarking Pada Video AVI dengan MP4 Menggunakan Algoritma Echo Data
Hiding
Sistem Kepemilikan
File Video
Watermarking
Esktraksi
Key/Kode Esktraksi <<extends>> <<uses>>
<<uses>>
(25)
Pada diagram tersebut tampak bahwa seorang User (pengguna) hanya bekerja dengan mengakses Use Case sistem watermark video. Pengguna tidak perlu mengetahui secara persis proses apa saja yang terjadi pada setiap tahap. Dengan demikian untuk memutuskan proses apa yang nantinya dilakukan pada setiap tahap menjadi tanggung jawab sistem.
Berikut ini merupakan dokumentasi naratif untuk use case Proses watermarking.
Tabel 3.1 Dokumentasi Naratif Use CaseWatermarking Nama use case Sistem keamanan file video
Aktor User
Deskripsi Use case yang mendeskripsikan fungsi pengamanan file video dengan pemberian label identitas.
Pre-condition Video yang di-label teks ber format AVI dan MP4.
Typical course of event
Aksi aktor Respon sistem
Langkah 1: User memilih tombol Watermarking dari menu utama.
Langkah 3 User memasukkan file video asli dengan memilih tombol Browse
Langkah 5: User memasukkan Key dan label penyisip
Langkah 2: Sistem merespon dengan memanggil program watermarking video.
Langkah 4: Sistem menampilkan nama-nama file video
Langkah 6: Sistem melakukan pelabelan file video dan menghitung nilai MSE dan PSNR.
Alternate course
Aksi aktor Respon sistem
- -
Post condition Label dan key telah disisipkan ke file video dan perolehan nilai
(26)
Activity diagram untuk use case kontrol proses watermarking terlihat sebagai
berikut.
User Sistem
Gambar 3.3 Activity DiagramProses Watermarking Memilih tombol watermarking
Memilih tombol Browse
Memasukkan Key dan label
Tampilkan kesalahan
Tidak
Memilih tombol Proses
Ya
Penyisipan label
Menghitung nilai MSE dan PSNR
Mengkonfirmasi keberhasilan proses Periksa kelengkapan data
(27)
Pada dokumentasi naratif use casedan activity diagram terlihat bahwa kontrol proses dilakukan dengan menjaga tahapan watermarking berlangsung sesuai dengan mekanisme dan kemudian sistem memutuskan apa saja yang harus dilakukan oleh sistem pada setiap tahapan dengan memanggil modul program yang sesuai untuk memproses proses selanjutnya.
Berikut ini merupakan dokumentasi naratif untuk use case Proses Ekstraksi.
Tabel 3.2 Dokumentasi Naratif Use CaseEkstraksi Nama use case Sistem keamanan file video
Aktor User
Deskripsi Use case yang mendeskripsikan fungsi ekstraksi kepemilikan dengan pengambilan label identitas dari file video.
Pre-condition Video yang di-label teks ber format AVI dan MP4.
Typical course of event
Aksi aktor Respon sistem
Langkah 1: User memilih tombol Ekstraksi dari menu utama.
Langkah 3 User memasukkan file video watermark dengan memilih tombol Browse
Langkah 5: User memasukkan Key dan kode ekstraksi
Langkah 2: Sistem merespon dengan memanggil program Ekstraksi video.
Langkah 4: Sistem menampilkan nama-nama file video
Langkah 6: Sistem melakukan ekstraksi label dari file video watermark dan menghitung nilai RR.
Alternate course Aksi aktor Respon sistem
- -
(28)
Activity diagram untuk use case proses ekstraksi terlihat sebagai berikut.
User sistem
Gambar 3.4Activity DiagramProses Ekstraksi Memilih tombol
Proses Melakukan ekstraksi label
Menghitung nilai RR
Mengkonfirmasi keberhasilan proses Memilih tombol Ekstraksi
Memilih tombol Browse
Memasukkan Key dan Kode Ekstraksi
Tampilkan kesalahan
Tidak
Ya
(29)
Pada dokumentasi naratif use casedan activity diagram terlihat bahwa kontrol proses dilakukan dengan menjaga tahapan ekstraksi berlangsung sesuai dengan mekanisme yang seharusnya dan kemudian sistem memutuskan apa saja yang harus dilakukan oleh sistem pada setiap tahapan dengan memanggil modul program yang sesuai untuk memproses pesan.
3.1.4Analisis Proses Sistem
Implementasi watermarking pada pemberian identitas file video terdiri proses Watermarking dan Ekstraksi dapat digambarkan dalam penelitian sebagai sequence
diagram.Sequence Diagram proses Watermarking dapat dilihat seperti pada Gambar
3.5.
Gambar 3.5Sequence Diagram Proses Watermarking :Watermarking
Browse File video
File video
:Echo Data Hiding
Echo
:Insertion Echo
Insert Key dan label
Kernel File video
Biner Key dan label
:Hitung MSE dan PSNR
Nilai MSE/PSNR Kode ekstraksi
(30)
Sistem watermarking memerlukan file video asli, key dan label identitas yang akan dimasukkan sebagai identitas video. Tahap awal dilakukan pembentukan echo pada video dengan bantuan kernel (0 dan 1). Fungsi echo adalah sebagai wadah tempat penyisip dalam bentuk biner.
Sequence Diagram proses Ekstraksi dapat dilihat seperti pada Gambar 3.6.
Gambar 3.6Sequence Diagram Proses Ekstraksi
Sistem ekstraksi memerlukan file video watermark, key dan kode ekstraksi yang akan dimasukkan untuk mendapatkan label identitas video. Tahap awal dilakukan pembacaan echo pada video watermark untuk mendapatkan kernel (0 dan 1). Label penyisip yang peroleh dalam bentuk biner dikonversikan ke ASCII.
Implementasi watermarking dituliskan sebagai pseudocode dibawah ini. :Ekstraksi
Browse File video watermark
File video watermark
Kernel 0 dan 1 :Ekstraksi bit echo
Insert Key dan Kode Ekstraksi
Biner Key dan Kode Ekstraksi
:Hitung RR
Nilai RR
:Pembentukan Label
(31)
Video Video_input Label Label_input
For i=1 to sampel_video_max Kernel=echo_kernel0
If kernel=0 then Kernel=1 Else
Kernel=0 Endif
bin_label=ASCII_to_Bin (label) if bin_label=1 then
Kernel 0 bin_label Else if bin_label=0 then
Kernel 1 bin_label Endif
Next i
Video_Watermark Video(save) kd_Ekstr= FileLen(Video)
Jum_bit_label_Aslilen(label_asli)
Keterangan:
User menginput file video yang hendak di-watermarking, serta label sebagai pemberi identitas. Selanjutnya sistem membuat echo pada file video dengan menggunakan kernel 0 dan 1. Label kemudian dikonversi menjadi kode biner dan disisipkan pada echo 0 dan 1 sampai semua biner label habis dan dilakukan penyimpanan file video ter-watermarking.
Implementasi ekstraksi dituliskan sebagai pseudocode dibawah ini.
video Video_Watermark kodeEks kd_Ekstr
For i1 to sampel_video_max echo_kernel kernel(video)
(32)
If kernel0 then bin_label=1 Else
bin_label=0 Endif
ASCII_labelbinToASCII (bin_label) Next i
Label ASCII_label
Jum_bit_label_Ekstlen(ASCII_label)
Keterangan:
User menginput file video dan kode ekstraksi, selanjutnya sistem membentuk echo 0 dan 1 menggunakan kernel 0 dan 1. Sistem membaca kernel 0 sebagai biner 1 dan kernel 1 sebagai biner 0 dari label watermark. Setelah semua biner diperoleh, maka biner label dikonversikan ke ASCII sebagai label watermark.
3.2Perancangan Sistem
Perancangan sistem berdasarkan hasil analisis proses sistem akan diperoleh gambaran fungsionalitas yang akan diterapkan pada sistem. Berdasarkan gambaran ini suatu model rancang bangun diwujudkan dalam bentuk flow chartdan rancangan antarmuka pengguna, dimana rancangan ini nantinya akan diimplementasikan melalui bahasa pemrograman.
3.2.1 Perancangan Flow Chart
Flowchart adalah bagan alir yang menggambarkan arus data dari program. Flowchart menggambarkan proses-proses yang akan dilakukan oleh sistem dengan bentuk simbol-simbol yang akan memudahkan di dalam perancangan program sebuah sistem.
(33)
3.2.1.1 Flow ChartWatermarking Video
Flow ChartWatermarking Video dapat dilihat seperti pada Gambar 3.7
Gambar 3.7Flow ChartWatermarking
3.2.1.2 Flow Chart Ekstraksi
Flow Chart ekstraksi label dari file video watermark dapat dilihat seperti pada
Gambar 3.8.
Start
Input File Video, Label dan Password
Baca Sampel Audio
Pembuatan Echo dengan Kernel 0 dan 1
Sisipkan setiap kernel untuk data sampel
Konversikan Pesan Biner
Ganti Kernel 1 dengan bit-bit Pesan
Gabung Kernel dengan Data Sampel
Representasi Video watermark Nilai MSE, PSNR, Kode Ekstraksi
Stop
(34)
Gambar 3.8Flow Chart Ekstraksi
3.2.2 Perancangan Antarmuka (Interface)
Perancangan antar muka adalah rancangan tampilan yang menghubungkan pengguna (user) dengan komputer dengan bantuan program. Salah satu syarat pembuatan antar muka adalah berorientasi pada mudah digunakan (user friendly) serta informatif.
Start
Input File Video Watermark, Key dan Kode Ekstraksi
Baca Sampel Audio
Baca Kernel 1 dari Sampel Audio
Konversikan 8 Biner ASCII
Gabung kode ASCII Label
Representasi Label dan Recovery rate
Stop
(35)
3.2.2.1Rancangan Menu Utama
Rancangan Menu Utama merupakan tampilan yang pertama kali muncul saat program dijalankan. Pada rancangan ini terdapat menu Watermarking yang berfungsi untuk melakukan watermarking terhadap file video, Extractionyang berfungsi untuk melakukan ekstraksi terhadap file video watermark, Result yang untuk menampilkan informasi hasil watermarking serta ekstraksi label dari file video, About dan Quit. Rancangan Menu Utama terlihat seperti pada Gambar 3.9.
Gambar 3.9Rancangan Menu Utama
Keterangan:
1. Menu Watermarkingyaitu program yang berfungsi untuk melakukan proses
watermarking terhadap file video.
2. Menu Extraction yaitu program yang berfungsi untuk melakukan proses ekstraksi terhadap file video watermark.
3. Menu Result yaitu program yang berfungsi untuk menampilkan hasil perbandingan watermarking video AVI dan MP4
4. Menu About yaitu program yang berfungsi untuk menampilkan informasi aplikasi.
5. Menu Quit yaitu program yang berfungsi untuk menutup form Menu Utama aplikasi.
6. Logo Universitas Sumatera Utara 7. Label Keterangan nama penelitian
Judul Penelitian
Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Xxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx
Watermarking About Quit
1 4 5
7 Extraction
2
Result 3
(36)
3.2.2.2Rancangan Form Watermarking
Rancangan Form Watermarking berfungsi sebagai penyisipan label identitas yang berformat teks ke dalam filevideo digital. Pada rancangan ini terdapat tampilan tombol untuk pemanggilan file video yang akan di-watermarking. Sebelum proses watermarking user harus menginput Key serta label penyisip. Output pada proses watermarking adalah nilai MSE (Mean Squared Error), PSNR (Peak Signal to Noise
Ratio) serta kode ekstraksi yang harus diinput pada saat melakukan ekstraksi.
Rancangan Form Watermarking dapat dilihat seperti pada Gambar 3.10.
Gambar 3.10 Rancangan Form Watermarking Tampilan
VideoAVI Tampilan
VideoMP4 1
3
MSE
Kode Ekstraksi Key
Cover Video AVI
4 Browse
Cover Video MP4
Browse
Video Watermark AVI Video Watermark MP4
PSNR MSE
Kode Ekstraksi ASCII Penyisip
PSNR
Progress Bar Progress Bar
Proses Batal Proses Batal Selesai
2
5 6
7
8 9
10
12 13 14 15
Biner Penyisip
(37)
Keterangan:
1. TextBox berfungsi berisi nama file video AVI yang akan di-watermarking 2. TextBox berfungsi berisi nama file video MP4 yang akan di-watermarking 3. Tampilan Video AVI melalui Windows Media Player
4. Tampilan Video MP4 melalui Windows Media Player 5. TextBox berfungsi berisi nama file video AVI watermark 6. TextBox berfungsi berisi nama file video MP4 watermark 7. TextBox berisi keywatermark
8. TextBox berisi label watermark dalam ASCII 9. TextBox berisi label watermark dalam biner 10. TextBox berisi kode ekstraksi video AVI 11. TextBox berisi kode ekstraksi video MP4 12. Label berisi nilai MSE video AVI
13. Label berisi nilai PSNR video AVI 14. Label berisi nilai MSE video MP4 15. Label berisi nilai PSNR video MP4
3.2.2.3Rancangan Form Extraction
Rancangan form Extraction berfungsi melakukan ekstraksi label penyisip dari file video yang sudah di-watermarking. Pada tampilan form Extraction yang terdiri dari opsi pilihan format file video yang hendak diekstraksi dengan memilih tombolLoad. Tombol Play berfungsi untuk menjalankan video yang dipilih sebelum dan sesudah dilakukan extraction. Tombol Batal berfungsi untuk membersihkan halaman
Extraction. Sebelum dilakukan proses Extraction, user diharuskan menginput
informasi Key serta kode ekstraksi. Output dari proses Extractionadalah label penyisip serta nilai Recovery Rate (RR). Rancangan Form Extraction dapat dilihat seperti pada Gambar 3.11.
(38)
Gambar 3.11 Rancangan Form Ekstraksi
Keterangan:
1. TextBox berfungsi untuk menampilkan nama file video AVI watermark 2. TextBox berfungsi untuk menampilkan nama file video MP4 watermark 3. Tampilan Video AVI melalui Windows Media Player
4. Tampilan Video MP4 melalui Windows Media Player 5. TextBox berfungsi berisi key ekstraksi file video AVI 6. TextBox berfungsi berisi key ekstraksi file video MP4
Tampilan VideoAVI Tampilan VideoMP4 1 3 Cover Video AVI
4 Cover Video MP4
Load
2
Batal
Ekstraksi
Load Batal
Kunci Ekstraksi Video AVI Key
Kode Ekstraksi Label Video AVI ASCII Penyisipan ASCII Ekstraksi Recovery Rate Selesai Historis Ekstraksi
Kunci Ekstraksi Video MP4 Key
Kode Ekstraksi Label Video MP4
ASCII Penyisipan
ASCII Ekstraksi
Recovery Rate
5 6
7 8
9 10
13 14
17 18
Biner Penyisip 11 Biner Penyisipan 12
(39)
7. TextBox berisi kode ekstraksi video AVI 8. TextBox berisi kode ekstraksi video MP4 9. Label berisi ASCII label penyisip video AVI 10.Label berisi ASCII label penyisip video MP4 11.Label berisi Biner label penyisip video AVI 12.Label berisi Biner label penyisip video MP4 13.Label berisi ASCII label ekstraksi video AVI 14.Label berisi ASCII label ekstraksi video MP4 15.Label berisi Biner label ekstraksi video AVI 16.Label berisi Biner label ekstraksi video MP4 17.Label berisi nilai Recovery Rate video AVI 18.Label berisi nilai Recovery Rate video MP4
3.2.2.4Rancangan Hasil Pengujian Watermarking
Rancangan Hasil Pengujian Watermarking berfungsi untuk menampilkan hasil
watermarking video AVI dan MP4 berupa menghitung nilai MSE dan PSNR.
Rancangan Hasil Pengujian MSE dan PSNR dapat dilihat seperti pada Gambar 3.12.
Gambar 3.12 Rancangan Hasil Pengujian Watermarking
No FileVideoAsli FileVideoWatermark Label Penyisip MSE PSNR Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx
HASIL PENGUJIAN WATERMARKING Format Video:xxxxx
(40)
3.2.2.5Rancangan Hasil Pengujian Ekstraksi
Rancangan Hasil Pengujian Ekstraksi berfungsi untuk menampilkan hasil ekstraksi label dari video watermark yang berformat AVI dan MP4 berupa menghitung nilai
recovery rate. Rancangan Hasil Pengujian ekstraksi dapat dilihat seperti pada Gambar
3.13.
Gambar 3.13 Rancangan Hasil Pengujian Ekstraksi
3.2.2.6Rancangan About
Rancangan About ini berfungsi menampilkan informasi tentang aplikasi pada penelitian ini. Rancangan About dapat dilihat seperti pada Gambar 3.14.
Gambar 3.14 Rancangan About
Informasi Watermarking dan ekstraksi video format AVI dan MP4 dengan algoritma Echo Data Hiding
No FileVideoAsli FileVideoWatermark Label Penyisip Label Ekstraksi RR Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx Xx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx
HASIL PENGUJIAN EKSTRAKSI Format Video:xxxxx
(41)
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1Implementasi
Implementasimerupakanhasil dari perancangan sistem pada bab sebelumnya yang berisi tentang proses dan tampilan sistem mencakup keseluruhan bentuk tampilan pada sistem.
4.1.1 Proses Pembacaan File Video
Sebagai contoh dibawah ini adalah struktur file RIFF (wav)
52 48 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00 22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 1e1734 00 20 1f 1e 4a 1d 3b 1f
10 f4 1e f324 e7 23 a6 3c f2 24 f2 11 c0 1a 0d 00 7f 11 00 22 07 3d 3d 0 3d 0 2 9a 2a 4f 3e 3d 00 10 10 10 03 3d 10 10 2 f 10 10 12 00 12 10 25 23 13 00 04 11 23 00 00 12 11 32 2a 2a 9f 25 10 -10 02 12 10 53 13 00 a6 11 12 23 00 0f 10 10 10 12 10 5d 23 13 70 11 26 23 00 01 13 9a 2a 2f 10 10 10 12 10 53 90 56 11 23 00 01 13 0e 22 529a 2a 10 3d 10 02 2f 10 10 10 12 -10 11 33 13 00 07 3d 10 02 3f 10 10 12 12 53 13 30 30 37 07 13 3d 10 02 f 0 10 10 12 -10 53 14 13 00 07 3d 10 02 f 0 10 00 12 26 25
Gambar 4.1Data StreamAudio Wav Dari file audio dengan format WAV di atas:
a. Empat byte pertama selalu berisi 52 48 46 46 (hexa) yang jika di konvensi mempunyai arti R =52, I =48, F= 46, F = 46 sama dengan RIFF.
b. Empat byte berikutnya berisi 24 08 00 00 menyatakan ukuran file audio yaitu 24=36, 08=8, 00=0, 00=0 yang sama dengan 36800, maka ukuran filenya adalah 36800 kb – I kb = 36799 kb.
c. Empat byte berikutnya 57 41 56 45 menyatakan jenis file: 57=W, 41=A, 56=V, 45=E
d. Empat byte berikutnya adalah 66 6d 74 20 menyatakan ID “fmt”, 66=f, 6d=m, 74=t dan 20=spasi kosong.
(42)
e. Empat byte berikutnya adalah 10 00 00 00 yang menyatakan panjang informasi, 10 = 16, 00=0, 00=0, 00=0 semuanya bernilai 16.
f. Empat byte berikutnya adalah 01 00 02 00 yang bernilai 1 dan 2 channel (stereo).
g. Empat byte berikutnya adalah 22 56 00 00 yang menyatakan sample rate
dengan nilai 22=”, 56=V, 00=0, 00=0.
h. Empat byte berikutnya adalah 88 58 01 00 yang menyatakan byte rate dengan
nilai 22=”, 56=V, 00=0, 00=0.
i. Dua byte berikutnya adalah BlockAlign yang bernilai 04 00 yang menyatakan yang menyatakan ukuran data untuk satu sample penuh dalam byte. Yang dimaksud dengan satu sample penuh adalah satu sample yang mewakili nilai dari sample pada semua channel pada suatu waktu.
j. Dua byte berikutnya adalah nilai bit per sampel (BitsPerSample) yang bernilai 10 00 adalah 16 dan 00 = 16 bit per sampel untuk sampel right channel maupun untuk sampel left channel.
k. Empat byte berikutnya adalah 64 61 74 61 yang menyatakan ID dengan nilai
64=d, 61=a, 74=t, 61=a dengan arti “data” yang menyatakan data sampel
digital audio.
l. Enam belas (16) byte berikutnya adalah sampel audio right channel sampel 1 sampai sampel ke 4 dengan nilai 1e1734 00 20 1f 1e 4a 1d 3b 1f 10 f4 1e f324. m. Enam belas (16) byte berikutnya adalah sampel audio left channel sampel 5
sampai sampel ke 8 dengan nilai f2 11 c0 1a 0d 00 7f 11 00 22 07 3d 3d 0 3d
0.
n. Selanjutnyaadalah data sampel audio.
Langkah-langkah watermarking dengan algoritma echo data hiding adalah sebagai berikut:
1. Input file video asli (cover vidio) dan key. 2. Pemisahan frame video dengan sampleaudio. 3. Pembacaan sample audio dari frame audio 4. Hitung nilai biner untuk setiap sampleaudio.
5. Konversikan label teks dan password ke nilai biner. 6. Buat echo dari sample audio.
(43)
7. Sisipkan nilai biner label ke dalam echo audio. 8. Simpan file video watermark.
Sebagai contoh 16 byte dari sample audio diatas: 1e1734 00 20 1f 1e 4a 1d 3b 1f 10 f4
1e f324 disisipi dengan pesan HEY. Sample audio dikonversikan ke biner menjadi:
1e = 00011110 17 = 00010001 34 = 00110100 00 = 00000000 20 = 10000000 If = 00011111 Ie = 00011110
4a = 01001010 1d = 00011101 3b = 00111011
1f = 00011111
10 = 00010000 f4 = 11110100 1e = 00011110 f3 = 11110011 24 = 00100100
Biner pesan “HEY” adalah 01001000 01000101 01011001 Biner key “123” adalah 00000001 00000010 00000011
Jadi, biner penyisip adalah 00000001 00000010 00000011 00100011 01001000 01000101 01011001
Dengan biner 00100011 (dalam ASCII adalah “#”) sebagai penanda batasan antara biner key dan biner pesan yang akan disisipkan.
Pembagian data sampel menjadi 4 blok dimana masing-masing berisi 16 byte/4 yaitu 4 data.
Blok-1
1e = 00011110 17 = 00010001
(44)
34 = 00110100 00 = 00000000 Blok-2
20 = 10000000 If = 00011111 Ie = 00011110
4a = 01001010 Blok-3
1d = 00011101 3b = 00111011
1f = 00011111
10 = 00010000 Blok-4
f4 = 11110100 1e = 00011110 f3 = 11110011 24 = 00100100
Pembuatan kernel 0 dan 1 dari data sampel adalah:
Pada setiap blok ditambahkan kernel 0 dan 1 secara berselang-seling, dimana Blok-1 dan Blok-3 ditambah kernel 0 sedangkan Blok-2 dan Blok-4 ditambah kernel 1 sebagai berikut:
Blok-1
1e = 00011110 17 = 00010001 34 = 00110100 00 = 00000000
0 = 00000000 <Kernel 0> Blok-2
20 = 10000000 If = 00011111 Ie = 00011110
(45)
1 = 00000001 <Kernel 1> Blok-3
1d = 00011101 3b = 00111011
1f = 00011111
10 = 00010000
0 = 00000000 <Kernel 0> Blok-4
f4 = 11110100 1e = 00011110 f3 = 11110011 24 = 00100100
1 = 00000001 <Kernel 1>
Selanjutnya sisipkan biner vektor penyisip 00000001 00000010 00000011 00100011 01001000 01000101 01011001 ke dalam setiap blok, dimana bit 0 ke dalam kernel 0 dan bit 1 ke dalam bit 1.
Langkah-langkah ekstraksi adalah sebagai berikut: 1. Input file video watermark,key serta kode ekstraksi. 2. Pembacaan header file video.
3. Baca sample audio dari stream pada posisi kode ekstraksi. 4. Baca bit terakhir atau echo.
5. Hitung nilai biner untuk setiap echo pada sample audio. 6. Rekonstruksi biner setiap 8 bit ke ASCII menjadi label. 7. Tampilkan label.
Selanjutnya pesan “HEY” dalam biner adalah: 01001000 01000101 01011001
H : 01001000 E : 01000101 Y : 01011001
(46)
0 1 0 0 1 0 0 0
Gambar 4.2 Sinyal awal yang dipecah menjadi beberapa bagian kecil
Pada Gambar 4.2 sinyal asli dibagi menjadi tujuh bagian yang diberi label a, b, c, d, e, f, dan h. Pada bagian a, c, d, dan f akan disisipkan bit 0. Untuk itu akan digunakan kernel 0 sebagai fungsi sistem pada setiap bagian tersebut. Demikian sebaliknya bit 1 akan disisipkan pada bagian b, e, g dan h maka akan digunakan kernel 1 sebagai fungsi sistem pada bagian tersebut. Untuk mencapai hasil yang tidak dapat didengar oleh pendengaran manusia, maka dapat dibuat sinyal echo 1 dengan melakukan pembuatan echo pada sinyal asli menggunakan kernel 1 dan membuat sinyal echo 0 dengan menggunakan kernel 0 sebagai fungsi sistem terhadap sinyal asli. Hasil dari sinyal sinyal tersebut dapat dilihat pada Gambar 4.3.
Gambar 4.3 Pembuatan sinyal echo 1 dan sinyal echo 0
Untuk menggabungkan dua sinyal tersebut, maka dibuat dua sinyal mixer. Sinyal
mixer terdiri dari nol dan satu tergantung dari bit yang ingin disembunyikan pada
(47)
Gambar 4.4 Sinyal Mixer
Sinyal mixer 0 kemudian dikalikan dengan sinyal echo 0 sedangkan sinyal
mixer 1 dikalikan dengan sinyal echo 1, kemudian kedua hasil tersebut dijumlahkan.
Sebagai catatan bahwa sinyal mixer 0 merupakan komplemen dari sinyal mixer 1 dan transisi antara masing masing sinyal adalah bertahap atau melandai. Jumlah antara dua sinyal mixer tersebut selalu 1. Ini akan memberikan transisi yang halus antara masing masing bagian yang dikodekan dengan bit yang berbeda, dan mencegah perubahan yang mencolok pada hasil gabungan sinyal.
4.1.2 Perhitungan Mean Square Error (MSE), Peak Signal to Noise Ratio (PSNR) dan Recovery Rate (RR)
MSE didalam statistik merupakan kuadrat rata-rata dari error yaitu perbedaan antara sinyal asli dengan sinyal estimasi. Sinyal estimasi merupakan sinyal output dari sistem. Semakin kecil nilai MSE maka sinyal asli dengan sinyal estimasi mempunyai kesamaan. MSE digunakan untuk mengukur rata-rata kesalahan yang berasal dari kuantitas yang akan diestimasi.
MSE = ∑ )2
Dimana MSE = Mean Square Error N = jumlah data sampel
S = sinyal baseline (nilai data cover audio) Se = sinyal estimasi (nilai data watermark audio)
Jika diketahui jumlah sampel (N) = 10, maka perhitungan nilai sinyal Baseline dan Estimasi dapat ditunjukkan pada tabel 4.1.
(48)
Tabel 4.1 Perhitungan Nilai Sinyal Baseline dan Estimasi
S Se (S-Se) (S-Se)2
S1 = 50 S1e = 50 S-Se = 0 0
S2 = 40 S2e = 55 S-Se = 15 225
S3 = 30 S3e = 30 S-Se = 0 0
S4 = 0 S4e = 15 S-Se = 15 225
S5 = 80 S5e = 75 S-Se = 5 25
S6 = 110 S6e = 100 S-Se = 10 100
S7 = 30 S7e = 30 S-Se = 0 0
S8 = 20 S8e = 20 S-Se = 0 0
S9 = 10 S9e = 20 S-Se = 10 100
S10 = 10 S10e = 10 S-Se = 0 0
∑ (S-Se)2 675
Jadi, nilai MSE = 1/10 x (675) = 67.5
Setelah nilai MSE diperoleh, maka selanjutnya dapat dilakukan perhitungan nilai PSNR dengan rumus PSNR = 20 x log10 (
√ ) dengan Nmax = 110
PSNR = 20 x log (
√
PSNR = 20 x log (
PSNR = 20 x log(13.39) PSNR = 20 x 1.12 PSNR = 22,53
Bit label watermarking “HEY” berjumlah = 24 bit dan bit label yang berhasil
diekstraksi = 24 bit maka, perhitungan recovery rate dapat dihitung dengan rumus ( )
Recovery Rate (RR)= (24/24) x 100 %= 100 %
(49)
Berikut ini adalah tampilan dan penjelasan dari form – form yang terdapat pada
aplikasi watermarking pada video AVI dengan MP4 menggunakan algoritma Echo Data Hiding.
4.2.1 Tampilan Menu Utama
Tampilan Menu Utama merupakan tampilan awalyang muncul setelah menjalankan program watermarking video. Tampilan ini berisi menu Watermarking,Extraction,
Result, Aboutdan Quit. Tampilan Menu Utama dapat dilihat pada Gambar4.5.
Gambar 4.5 Tampilan Menu Utama
4.2.2 Tampilan Form Watermarking
Dari Menu Utama pada Gambar 4.1 terdapat sub menu Watermarking berfungsi untuk melakukan proses penyisipan pesan ke dalam file video AVI dan MP4 seperti pada Gambar 4.6.
(50)
Gambar 4.6 Tampilan Form Watermarking
4.2.3 Tampilan Form Extraction
Dari Menu Utama terdapat sub menu Extraction yang berfungsi untuk melakukan deteksi label dari file video AVI dan MP4 yang ter-watermarking seperti pada Gambar 4.7.
(51)
4.2.4 Tampilan Hasil Pengujian Watermarking
Tampilan Hasil Pengujian Watermarkingmerupakan informasi hasil penyisipan label identitas pada file video AVI maupun MP4. Tampilan Hasil Pengujian Watermarking dapat dilihat pada Gambar 4.8.
Gambar 4.8 Tampilan Hasil Pengujian Watermarking
4.2.5 Tampilan Hasil Pengujian Extraction
Tampilan Pengujian Extractionmerupakan informasi hasil ekstraksi label identitas dari file video AVI maupun MP4 yang ter-watermarking. Tampilan Hasil Pengujian
(52)
Gambar 4.9 Tampilan Hasil Pengujian Extraction
4.2.6 Tampilan About
Tampilan About berfungsi untuk menampilkan keterangan tentang penulis skripsi watermarkingvideo menggunakan algoritma Echo Data Hiding(EDH). Tampilan
About dapat dilihat pada Gambar 4.10.
(53)
4.3 Hasil Implementasi dan Pengujian
Pengujian sistem berfungsi untuk mengetahui kinerja dari program dalam melakukan
watermarking dan ekstraksi file video dengan algoritma Echo Data Hiding.
4.3.1 Hasil Pengujian Watermarking
Pengujian Watermarking adalah melakukan penyisipan file video dengan panjang pesan yang bervariasi. Tampilan hasil pengujian watermarking file video dapat dilihat pada Gambar4.11.
Gambar 4.11 Tampilan Hasil Pengujian Watermarking beserta file video
Pada proses watermarking dengan menggunakan algoritma Echo Data Hiding, dilakukan penyisipan label identitas berupa teks yang kemudian diubah ke dalam nilai biner dan disisipkan pada bit-bit sample audio yang juga berupa nilai biner.Setelah proses penyisipan label berhasil dilakukan, maka diperoleh nilai MSE dan PSNR pada masing-masing file video AVI dan MP4 sesuai dengan formula yang digunakan dalam perhitungan nilai MSE dan PSNR. Berikut hasil perolehan nilai MSE dan PSNR dari proses watermarking pada AVI dan MP4 menggunakan algoritma Echo Data Hiding adalah sebagai berikut:
(54)
MSE = ∑ )2
Jika diketahui jumlah sampel (N) = 10 dan ∑ (S-Se)2 = 675 maka nilai MSE = 1/10 x (675) = 67.5
Setelah nilai MSE diperoleh, maka selanjutnya dapat dilakukan perhitungan nilai PSNR dengan rumus PSNR = 20 x log10 ( √ ) dengan Nmax = 110
PSNR = 20 x log (
√
PSNR = 20 x log (
PSNR = 20 x log(13.39) PSNR = 20 x 1.12 PSNR = 22,53
4.3.2 Hasil Pengujian Ekstraksi
Pengujian Extraction adalah melakukan pengeluaran/ pengembalianlabel dari dalam file video watermark. Tampilan Pengujian Extraction dapat dilihat pada Gambar 4.12.
Gambar 4.12 Tampilan Hasil Pengujian Ekstraksi beserta file video
Pada proses ekstraksi, label penyisip berupa nilai biner dalam representasi teks dipanggil kembali untuk mendapatkan nilai biner dan teks sesuai dengan label
(55)
penyisip yang telah disisipkan pada proses watermarking sebelumnya. Nilai pengembalian label penyisip melalui proses ekstraksi ini yang dimaksud sebagai nilai Recovery Rate (RR). Berikut perolehan hasil dari ekstraksi berupanilai RR:
Bit label watermarking “FASILKOM-TI” berjumlah = 88 bit dan bit label yang berhasil diekstraksi = 88 bit maka, perhitungan Recovery Rate dapat dihitung dengan
( )
Recovery Rate= (88/88) x 100% = 100%
Setelah melakukan pengujian terhadap sistem maka diperoleh hasil pengujian. Hasil pengujian sistem terhadap proses watermarking dan ekstraksi pada 6 buah sample video AVI dan 6 buah sample video MP4 memperoleh nilai rata-rata untuk parameter-parameter yang diuji disajikan pada tabel 4.2.
Tabel 4.2 Nilai Rata-rata MSE, PSNR dan RR
No.
AVI MP4
MSE PSNR RR MSE PSNR RR
1. 41,77 31,92 100 59,08 32,55 100
2. 38,10 32,32 100 53,89 32,95 100
3. 44,37 31,66 100 62,74 32,29 100
4. 26,44 33,91 100 37,39 34,54 100
5. 51,23 31,04 100 72,45 31,66 100
6. 46,80 31,43 100 66,19 32,06 100
Rata-rata
41,45 32,05 100 58,62 32,68 100
Nilai MSE rata-rata untuk video format AVI : 41.45 Nilai PSNR rata-rata untuk video format AVI : 32,05 Nilai Recovery Rate rata-rata video format AVI : 100
Nilai MSE rata-rata untuk video format MP4 : 58,62 Nilai PSNR rata-rata untuk video format MP4 : 32,68 Nilai Recovery Rate rata-rata video format MP4 : 100
(1)
COMPARISON OF WATERMARKING ON AVI AND MP4 USING ECHO DATA HIDING ALGORITHM
ABSTRACT
The owner of digital video needs to keep the originality of ownership identity. To cover that, watermarking technology is the solutions, where this technique is one of those many ways to insert or to hide the identity label into the digital file so that unauthorized people can’t view nor access it without a key. The method of Watermarking, Echo Data Hiding, is used to hide data into video file as echo representation. This experiment compares two video files such as AVI and MP4 using Echo Data Hiding Algorithm. This experiment uses Mean Squared Error (MSE), Peak Signal to Noise Ratio (PSNR) and Recovery Rate (RR) parameters. The result of this experiment shows that watermarking process can run well for both of the files with limit of 28 characters. From the result we can also see that Echo Data Hiding can run well on AVI videos using MSE parameters. From PSNR parameters side, it is shown that Echo Data Hiding method works better on MP4 video files. The result of RR for both videos are the same. Implementation using Microsoft Visual Studio 2010 using VB.Net programming language.
(2)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel x
Daftar Gambar xi
Daftar Lampiran xii
Bab 1 Pendahuluan 1
1.1 Latar Belakang 1
1.1.1 Penelitian Terkait 2
1.2Rumusan Masalah 3
1.3Batasan Masalah 3
1.4Tujuan Penelitian 4
1.5Manfaat Penelitian 4
1.6 Metode Penelitian 4
1.7Sistematika Penulisan 5
Bab 2 Tinjauan Pustaka 6
2.1 Video Digital 6
2.1.1 Format File AVI (Audio Video Interleaved) 8
2.1.2 Format Video MPEG 10
2.2 Watermarking 11
2.2.1 Digital Watermarking 12
2.2.2 Aplikasi Watermark 15
2.2.3 Klasifikasi Watermarking 16
2.2.4 Video Watermarking 17
2.2.5 Parameter Watermarking 18
2.3 Metode Echo Data Hiding 19
2.4 Flowchart 24
2.5 Data Flow Diagram 25
Bab 3 Analisis dan Perancangan 27
3.1 Analisis Sistem 27
3.1.1 Analisis Masalah 27
3.1.2Analisis Persyaratan 29
(3)
3.1.4 Analisis Proses Sistem 35
3.2 Perancangan Sistem 38
3.2.1 Perancangan Flowchart 38
3.2.1.1 Flowchart Watermarking Video 39 3.2.1.2 Flowchart Ekstraksi 39 3.2.2Perancangan Antarmuka (Interface) 40 3.2.2.1 Rancangan Menu Utama 41
3.2.2.2 Rancangan Form Watermarking 42
3.2.2.3 Rancangan Form Extraction 43
3.2.2.4 Rancangan Hasil Pengujian Watermarking 45 3.2.2.5 Rancangan Hasil Pengujian Ekstraksi 46
3.2.2.6 Rancangan About 46
Bab 4 Implementasi dan Pengujian 47
4.1 Implementasi 47
4.1.1 Proses Pembacaan File Video 47
4.1.2 Perhitungan MSE, PSNR dan RR 54
4.2 Tampilan Sistem 56
4.2.1 Tampilan Menu Utama 56
4.2.2 Tampilan Form Watermarking 57
4.2.3 Tampilan Form Extraction 57
4.2.4 Tampilan Hasil Pengujian Watermarking 58 4.2.5 Tampilan Hasil Pengujian Extraction 59
4.2.6 Tampilan About 59
4.3Hasil Implementasi dan Pengujian 60
4.3.1 Hasil Pengujian Watermarking 60
4.3.2 Hasil Pengujian Ekstraksi 62
Bab 5 Kesimpulan dan Saran 64
5.1 Kesimpulan 64
5.2 Saran 65
(4)
DAFTAR TABEL
Nomor Tabel
Nama Tabel Halaman
2.1 3.1 3.2 4.1 4.2
Simbol-simbol Flowchart
Dokumentasi Naratif Use CaseWatermarking Dokumentasi Naratif Use CaseEkstraksi Perhitungan Nilai Sinyal Baseline dan Estimasi Nilai Rata-rata MSE, PSNR dan RR
25 31 33 55 63
(5)
DAFTAR GAMBAR
Nomor Gambar
Nama Gambar Halaman
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 Penyisipan watermark Ekstraksi watermark
Kernel dan Proses Pembentukan Echo Nilai Biner Sinyal
Contoh Blok Sinyal
Dua Buah Sinyal Gabungan
Penyisipan Pesan pada Echo Data Hiding Ekstraksi Pesan pada Echo Data Hiding
Diagram Ishikawa untuk Analisis Permasalahan Sistem Use CaseDiagram Sistem Aplikasi
Activity DiagramProses Watermarking Activity DiagramProses Ekstraksi
Sequence Diagram Proses Watermarking Sequence Diagram Proses Ekstraksi Flowchart Watermarking
Flowchart Ekstraksi Rancangan Menu Utama
Rancangan Form Watermarking Rancangan Form Ekstraksi
Rancangan Hasil Pengujian Watermarking Rancangan Hasil Pengujian Ekstraksi Rancangan About
Data Stream Audio WAV
Sinyal awal yang dipecah menjadi beberapa bagian kecilPembuatan sinyal echo 1 dan sinyal echo 0 Sinyal Mixer
Tampilan Menu Utama
Tampilan Form Watermarking Tampilan Form Extraction
Tampilan Hasil Pengujian Watermarking Tampilan Hasil Pengujian Extraction Tampilan About
Tampilan Hasil Pengujian Watermarking beserta file video Tampilan Hasil Pengujian Ekstraksi beserta file video
13 14 20 22 22 22 23 24 28 30 32 34 35 36 39 40 41 42 43 45 46 46 47 52 53 53 56 57 58 58 59 60 61 62
(6)
DAFTAR LAMPIRAN
Halaman