Bagaimana cara komputer meningkatkan resolusi 1024x768 ke 1920x1080?

8

Tanpa ada bar hitam yang saya maksud. 1080 bukan kelipatan 768 jadi apakah ada semacam kehilangan data?

V0ight
sumber
5
Ada algoritma penskalaan seperti penskalaan bikubik yang menggunakan splines untuk memperkirakan warna piksel saat diskalakan ke ukuran berapa pun.
EvilTak
@ EvilTak, dapatkah Anda memperluas komentar Anda menjadi sebuah jawaban kecil?
Glampert
@ Glampert melakukan itu. Apakah Anda ingin saya menghapus komentar saya?
EvilTak
@ EvilTak, saya pikir Anda bisa meninggalkannya. Jawaban bagus btw, terima kasih!
glampert

Jawaban:

8

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.

  1. Mengubah sampel menjadi fungsi kontinu, (rekonstruksi fungsi).
  2. (Mengubah)
  3. Pengambilan sampel kembali sinyal

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.

Rekonstruksi sinyal

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.

Proses

Gambar 2 : Tinjauan umum seluruh proses.

joojaa
sumber
5

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!

EvilTak
sumber
0

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:

  1. Isi tujuan dengan meninggalkan beberapa piksel dari sumber di luar tujuan. Dalam contoh Anda, sumbernya adalah 1024x768 dan tujuannya adalah 1920x1080. Jika Anda memperbesar gambar asli sehingga hasilnya 1920x1440, Anda kemudian dapat memotong bagian atas dan / atau bawah untuk membuatnya 1920x1080.
  2. Regangkan gambar tujuan agar pas. Jadi Anda akan skala secara vertikal dengan 1080/768 = 1.40625, dan skala secara horizontal pada 1920/1024 = 1.875. Ini hampir tidak pernah seperti yang Anda inginkan, dan terlihat mengerikan dalam banyak kasus. (Inilah yang membuat orang terlihat jauh lebih luas dari yang seharusnya, dan mengubah lingkaran menjadi oval dan rotasi menjadi gunting.)

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.

pengguna1118321
sumber
1
Anda juga dapat memiliki bilah putih. Anda juga dapat menggunakan beberapa fungsi sintesis gambar untuk mengisi piksel yang dapat Anda overlay dengan gambar yang dipotong sendiri dan yang diperluas misalnya. di sini sederhananya adalah jumlah tak terbatas cara untuk menangani tanpa data. Saya pikir kebanyakan dari kita hanya berasumsi bahwa ini akan menjadi skala yang tidak seragam.
joojaa
Sangat benar. Saya berasumsi poster asli secara khusus tidak ingin diisi dengan warna solid dan hanya tertarik pada aspek penskalaan, karena itulah yang mereka tanyakan. Tetapi ada banyak metode pengisian lainnya. Ada juga metode penskalaan non-linear, di mana pusat mempertahankan rasio aspeknya dan ujung-ujungnya direntangkan, misalnya.
user1118321