Tanpa ada bar hitam yang saya maksud. 1080 bukan kelipatan 768 jadi apakah ada semacam kehilangan data?
Tanpa ada bar hitam yang saya maksud. 1080 bukan kelipatan 768 jadi apakah ada semacam kehilangan data?
Jawaban:
Intinya sebuah gambar adalah sekelompok sampel titik (baca A pixel bukan kuadrat 3 ). Saat Anda mengubah atau skala gambar, Anda perlu melakukan resample. Jadi apa yang Anda lakukan, secara teoritis, adalah mengambil sampel titik dan mengubahnya menjadi fungsi kontinu. Kemudian Anda mencicipi fungsi kontinu dan merekonstruksi sinyal. Jadi, ada dua atau tiga fase berbeda di sini.
Perhatikan bahwa tidak ada langkah-langkah ini yang memiliki formulir tetap. Dalam praktiknya, ketika dioptimalkan, tidak mungkin mengatakan bahwa ada langkah-langkahnya. Transformasi tidak harus sederhana, bisa memetakan bentuk menjadi spiral dll.
Gambar 1 : Sinyal 1-D direkonstruksi oleh filter yang berbeda.
Dalam praktiknya, sedikit pengetahuan yang diketahui tentang rekonstruksi sinyal di bidang pemrosesan sinyal. Mendesain filter ini dan memilih yang tepat adalah bentuk seni sendiri. Tapi, pada dasarnya, pilihan filter adalah pertukaran antara kabur dan dering . Tentu saja algoritma ini juga memiliki kualitas lain seperti berapa banyak instruksi yang diperlukan untuk mengimplementasikan dan seberapa cepat dan berapa banyak memori yang dibutuhkan dll. Yang dapat menjadi sangat penting dalam aplikasi waktu nyata atau tertanam.
Gambar 2 : Tinjauan umum seluruh proses.
Ada banyak algoritma upscaling dan downscaling tersedia untuk skala gambar dari resolusi apa saja ke resolusi sewenang-wenang lainnya. Setiap algoritma biasanya melibatkan trade-off antara efisiensi, kelancaran dan ketajaman, dengan berbagai tingkat trade-off untuk algoritma yang berbeda.
Lihatlah artikel Wikipedia ini untuk algoritme dan contoh algoritme tersebut.
Algoritma yang paling dikenal (dan digunakan) adalah algoritma interpolasi Bicubic . Ini interpolasi antara titik-titik 2D pada kotak persegi panjang. Menggunakan Cubic Splines (atau Cubic Interpolasi), pertama-tama interpolasi pada satu dimensi (menemukan baris / kolom yang diinterpolasi), kemudian menginterpolasi baris / kolom yang diinterpolasi di dimensi lain.
Interpolasi bilinear mirip dengan interpolasi Bicubic, kecuali interpolasi sebelumnya menggunakan fungsi linier dan hanya dapat interpolasi antara dua nilai dan yang terakhir menggunakan fungsi kubik dan dapat interpolasi antara empat nilai.
Fungsi sederhana untuk interpolasi Bicubic adalah sebagai berikut:
f(f(p00, p01, p02, p03, y),
f(p10, p11, p12, p13, y),
f(p20, p21, p22, p23, y),
f(p30, p31, p32, p33, y),
x)
di mana (x, y) adalah posisi interpolasi dan p [] [] adalah larik 2d yang mewakili kisi 4 * 4.
Periksa tautan ini untuk informasi lebih lanjut dan kode contoh, yang sangat membantu!
Sementara jawaban lain yang diberikan benar, saya tidak yakin mereka sepenuhnya menjawab pertanyaan Anda. Agar tidak mendapatkan bilah hitam, Anda memiliki 2 opsi jika tujuan tidak berbentuk yang sama (atau rasio aspek) sebagai sumber:
Ada pilihan lain, tetapi tidak sesuai dengan kriteria Anda - skala seragam, tetapi hanya sampai 1 dimensi sebesar tujuan. Dalam hal ini Anda akan skala baik secara horizontal dan vertikal dengan 1,40625 untuk mendapatkan hasil 1440x1080. Ini biasanya disebut sebagai "skala sesuai".
Untuk semua opsi ini, Anda dapat menggunakan algoritma penskalaan mana saja yang memenuhi kebutuhan Anda.