Aplikasi Pemrosesan Citra untuk Mengenali Permutation of Last Layer (PLL) pada Rubik’s
Cube
Muhammad Naufal Fakhrizal / 13518115 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jalan Ganesha 10 Bandung
mnaufalfakhrizal@gmail.com
Abstrak—Permutation of Last Layer (PLL) adalah tahap terakhir dalam menyelesaikan Rubik’s Cube dengan metode CFOP. Pada tahap ini, pemain perlu mengenali jenis PLL dan menjalankan algoritma yang sesuai. Pemain dapat menentukan jenis PLL dengan mengenali pola warna pada sisi-sisi Rubik’s Cube. Proses pengenalan ini dapat diotomatisasi menggunakan komputer. Pada makalah ini, digunakan pustaka OpenCV untuk membangun sebuah sistem yang mengambil sebuah foto Rubik’s Cube yang berada pada tahap PLL, kemudian menentukan jenis PLL dari Rubik’s Cube tersebut.
Kata kunci—CFOP, OpenCV, Pemrosesan Citra, PLL, Rubik’s Cube
I. PENDAHULUAN
Rubik’s Cube adalah permainan puzzle berbentuk kubus.
Kubus ini terdiri dari 26 kubus kecil bernama piece sehingga setiap sisi terbagi menjadi grid 3x3. Setiap sisi memiliki warna berbeda dapat diputar. Tujuan dari permain ini. adalah memutar sisi-sisi dari kubus sehingga setiap sisi memiliki warna yang seragam.
Makalah ini ditujukan untuk menunjukkan bagaimana mengplikasikan teknik pemrosesan citra untuk menentukan state dari Rubik’s Cube dan menentukan langkah selanjutnya untuk menyelesaikan Rubik’s Cube.
II. TEORI
A. Struktur dari Rubik’s Cube
Rubik’s Cube terdiri dari 26 kubus kecil yang disebut pieces. Terdapat tiga jenis piece.
1) Center Piece
Terletak di tengah-tengah sisi kubus. Terdapat 6 center piece pada Rubik’s Cube, dengan setiap piece memiliki 1 warna.
2) Edge Piece
Terletak di tengah rusuk kubus. Terdapat 12 edge piece pada Rubik’s Cube, dengan setiap piece memiliki 2 warna.
3) Corner Piece
Terletak di setiap titik sudut kubus. Terdapat 8 corner piece pada Rubik’s Cube, dengan setiap piece memiliki 3 warna.
B. Metode CFOP
Metode CFOP (Cross, F2L, OLL, PLL) adalah salah satu metode menyelesaikan Rubik’s Cube dengan cepat. Metode ini dipopulerkan oleh Jessica Fridrich. Metode ini terdiri dari empat tahap
1) Cross
Pada tahap ini, pemain menentukan layer pertama (biasanya sisi putih) dan memposisikan edge piece pada layer pertama sehingga pada posisi yang sebenarnya. Pada akhir tahap ini, pemain akan mendapatkan bentuk silang (cross) pada sisi putih, yang ditempatkan di sisi bawah kubus.
2) First 2 Layer (F2L)
Pada tahap ini, pemain menyelesaikan dua layer pertama dari Rubik’s Cube. Pada akhir tahap ini, pemain akan mendapatkan sisi putih sudah berwarna seragam dan keempat sisi yang bersebelahan dengan sisi putih hampir berwarna seragam kecuali piece pada layer terakhir (berseberangan dengan layer/sisi putih)
3) Orient Last Layer (OLL)
Pada tahap ini, pemain menyusun piece pada layer terakhir (biasanya sisi kuning) sehingga sisi teratas berwarna seragam (kuning).
4) Permute Last Layer (PLL)
Pada tahap ini, pemain menyusun piece pada layer terakhir sehingga warna sisi-sisi samping pada layer terakhir menjadi seragam. Terdapat 22 kasus yang mungkin terjadi (dengan satu kasus adalah kubus sudah terselesaikan), dan setiap kasus diberi label huruf seperti permutasi A, permutasi Gb, dan sebagainya.
III. METODE
Tahap-tahap berikut dilakukan dengan asumsi ketiga tahap sebelumnya (Cross, F2L, dan OLL) sudah diselesaikan
A. Citra input
Citra yang digunakan sebagai input adalah citra Rubik’s Cube yang diletakkan pada sebuah permukaan berwarna polos.
Sudut pandang citra dibuat sedemikian rupa sehingga tiga sisi dari Rubik’s Cube terlihat, yaitu satu sisi atas dan dua sisi samping. Sudut pertemuan antara ketiga sisi berada di tengah citra. Ukuran citra adalah 512x512 piksel.
B. Konversi Citra ke Domain Grayscale
Untuk keperluan deteksi tepi, citra dikonversi ke dalam domain grayscale. Hal ini dapat dilakukan dengan OpenCV menggunakan fungsi cv.cvtColor(img, cv.BGR2GRAY). Citra berwarna tetap disimpan untuk digunakan pada tahap selanjutnya
C. Pengenalan Tepi
Deteksi tepi dilakukan untuk menemukan tepi-tepi dari objek Rubik’s Cube. Pada eksperimen ini, Deteksi tepi dilakukan menggunakan detektor Canny.
D. Penentuan Sisi Samping Rubik’s Cube
Setelah itu, daerah-daerah pada citra yang menjadi sisi samping dari Rubik’s Cube perlu ditentukan. Sisi atas tidak perlu dideteksi karena diasumsi sudah memiliki warna yang seragam setelah melalui tahap sebelumnya (OLL). Untuk menentukan daerah yang menjadi sisi samping dari Rubik’s Cube, titik-titik sudut dari kedua sisi perlu ditentukan. Secara keseluruhan, terdapat enam titik sudut yang perlu ditentukan.
Pertama-tama, citra biner hasil deteksi tepi perlu dikonversi menjadi garis lurus. Hal ini dilakukan menggunakan transformasi Hough. Pada OpenCV, hal ini dilakukan dengan memanggil fungsi cv.HoughLinesP.
Hasil transformasi Hough masih mengandung garis-garis yang berada di dalam sisi samping Rubik’s Cube. Sementara itu, hanya garis-garis yang berada pada tepi yang dibutuhkan untuk menentukan titik-titik sudut yang diperlukan. Dengan membuang garis yang tidak perlu, didapatkan enam garis, dengan tiga garis pada tiap sisi.
Keenam titik sudut dapat ditentukan dengan menentukan titik persilangan antara dua garis yang bersebelahan.
E. Ekstraksi Sisi Samping Rubik’s Cube
Setelah mendapatkan lokasi titik-titik sudut dari setiap sisi pada citra, dapat dilakukan image warping pada setiap sisi untuk mendapatkan grid 3x3 dari setiap sisi. Karena distorsi sisi pada citra disebabkan oleh perspektif kamera, digunakan fungsi cv.warpPerspective untuk mendapatkan citra kedua sisi dari tampak depan. Matriks tranformasi diperoleh dengan fungsi cv.getPerspectiveTransform yang menentukan matriks transformasi yang mentransformasi posisi titik sudut sisi pada citra asal menuju titik sudut citra tujuan. Hasil image warping adalah dua citra untuk setiap sisi berukuran 90x90 piksel.
Dengan citra hasil warping, akan lebih mudah untuk menentukan warna setiap piece pada setiap sisi.
F. Pelabelan warna
Setelah itu, setiap piece pada kedua perlu diberi label warna. Pertama-tama, Sebuah citra sisi dibagi menjadi grid 3x3, dengan setiap sel pada grid mewakili piece pada sisi tersebut. Nilai warna dari setiap piece ditentukan dengan merata-ratakan nilai piksel pada daerah pusat sel yang terkait.
Nilai rata-rata setiap sel disimpan pada sebuah citra 3x3.
Terdapat tujuh label warna untuk keperluan eksperimen ini, enam di antaranya berkorespondensi dengan warna pada sisi Rubik’s Cube.
Putih (w)
Kuning (y)
Merah (r)
Jingga (o)
Biru (b)
Hijau (g)
Tidak diketahui (u)
kedua citra sampel warna di atas dikonversi ke domain HSV, kemudian diberi label dengan menentukan range dari ketiga channel yang berkorespondensi dengan setiap label yang tepat. Kedua citra tersebut akan diberi label sebagai berikut.
G. Mengenali pola dan pengambilan keputusan
Dari setiap sisi, tiga label teratas (warna piece pada layer teratas) diambil untuk dikenali polanya. Pola yang dimaksud adalah hubungan antara warna dari ketiga piece. Hubungan antara dua warna adalah apabila kedua warna merupakan warna sisi yang sama, sisi yang bersebelahan, atau sisi yang berseberangan. Pada umumnya, susunan warna pada Rubik’s Cube adalah sebagai berikut:
Sisi putih berseberangan dengan sisi kuning.
Sisi merah berseberangan dengan sisi jingga.
Sisi biru berseberangan dengan sisi hijau.
Terdapat sepuluh pola yang mungkin muncul:
Dua piece yang bersebelahan memiliki warna bersebeangan, dengan piece ketiga memiliki warna bersebelahan dengan warna kedua piece (2 varian)
Dua piece yang bersebelahan memiliki warna sama, dengan piece ketiga memiliki warna bersebelahan dengan warna kedua piece (2 varian)
Dua piece yang bersebelahan memiliki warna sama, dengan piece ketiga memiliki warna berseberangan dengan warna kedua piece (2 varian)
Dua piece berwarna sama mengapit piece dengan warna berseberangan
Dua piece berwarna sama mengapit piece dengan warna bersebelahan
Dua piece dengan warna berseberangan mengapit piece dengan warna bersebelahan
Ketiga piece berwarna sama
Diagram yang mengasosiasikan setiap pola dengan sebuah angka adalah sebagai berikut:
Pola dari keempat sisi samping pada Rubik’s cube menentukan jenis permutasi yang Sebagai contoh, pada permutasi H, setiap edge piece berada pada sisi yang berseberangan. Pola yang terlihat adalah “dua piece berwarna sama mengapit piece dengan warna berseberangan” pada keempat sisi samping.
Beberapa jenis permutasi dapat dikenali dengan melihat pola dari dua sisi saja. Tahap ini mengenali pola dari kedua sisi, kemudian menentukan jenis PLL yang mungkin dari kedua pola tersebut.
Pada hasil pelabelan sebelumnya, sisi kiri memiliki label warna merah, hijau, dan jingga, sementara sisi kanan memiliki label warna biru, biru, dan hijau. pola pada sisi kiri adalah dua piece dengan warna berseberangan mengapit piece dengan warna bersebelahan (pola 9 pada diagram). Pola pada sisi
warna sama, dengan piece ketiga memiliki warna berseberangan dengan warna kedua piece (pola 6 pada diagram). Hal ini berkoresponden dengan permutasi Y yang menukar sepasang edge piece yang bersebelahan dan sepasang corner piece yang berseberangan. Untuk menyelesaikan Rubik’s Cube ini, pemain cukup menjalankan serangkaian gerakan (algoritma) untuk permutasi Y sehingga setiap piece pada layer terakhir berada pada posisi yang seharusnya.
IV. HASIL EKSPERIMEN
Eksperimen menggunakan pustaka OpenCV versi 4.5.5 dan Python versi 3.10.4.
Citra Ground
Truth Prediksi Solved Solved
T Perm T Perm
Jb Perm Jb Perm
Na Perm Na Perm
Ua Perm Ua Perm
F Perm F
Y Perm Y Perm
Y Perm Fail
V. ANALISIS
Secara umum, sistem dapat mengekstrak sisi samping dari Rubik’s Cube, melabeli warna, dan menentukan permutasi dengan baik jika latar, dan pencahayaan baik. Terdapat kendala ketika citra input memiliki latar dengan tekstur seperti pada hasil eksperimen terakhir. Sistem gagal mendeteksi tepi pada sisi samping kubus sehingga tidak dapat menentukan titik-titik sudut pada sisi samping.
VI. KESIMPULAN
Pemrosesan citra dapat digunakan untuk menentukan state dari Rubik’s Cube, seperti menentukan permutasi dari layer terakhir (PLL). Pengenalan state dari Rubik’s Cube yang terotomatisasi dapat ditindaklanjuti dengan membangun sebuah robot yang dapat menyelesaikan Rubik’s Cube atau puzzle yang serupa.
UCAPAN TERIMA KASIH
Penulis memenjatkan puji syukur kepada Allah SWT yang seatas izin-Nya, penulisan makalah ini dapat terlaksana dengan baik. Ucapan terimakasih penulis sampaikan kepada Bapak Dr.
Rinaldi Munir M.T. sebagai dosen pengampu mata kuliah IF 4073 Interpretasi dan Pengolahan Citra Semester II Tahun 2021/2022 atas semua ilmu dan pengetahuan yang telah diberikan dalam mata kuliah ini. Selain itu, ucapan terima kasih juga disampaikan kepada pihak-pihak lain yang membantu kelancaran penulisan makalah ini.
REFERENCES
[1] Munir, Rinaldi. (2022). Kuliah Interpretasi dan Pengolahan Citra:
Kontur. Bandung.
[2] Munir, Rinaldi. (2022). Kuliah Interpretasi dan Pengolahan Citra:
Pendeteksian Tepi. Bandung.
[3] Klise, Andy. Andy Klise’s Rubik’s Cube Guides, kungoomanchu.com.
2017. [Online]. Available: htps://kungfoomanchu.com [Accessed: 25- May-2022]
[4] Daniel Duberg dan Jakob Tidestrom. (2015). Comparison of Rubik’s Cube Solving Methods Made for Humans. Stockholm: KTH Royal Institute of Technology.
PERNYATAAN
Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi.
Bandung, 25 Mei 2022
Muhammad Naufal Fakhrizal / 13518115