Pustaka Sumber Terbuka C++ untuk Pemprosesan Imej Selari
API C++ percuma yang menyokong bekas imej N-dimensi generik, set algoritma pemprosesan imej yang dipertingkatkan dan sebagainya.
Video++ ialah API pengeditan imej C++ berbilang benang dan merentas platform yang berkuasa yang membolehkan pembangun perisian bekerja dengan imej dan fail video dalam aplikasi C++ mereka sendiri. Perpustakaan ini sangat mudah dikendalikan dan dibangunkan dengan memanfaatkan ciri baharu C++11/C++14. Idea utama di sebalik Video++ adalah untuk mereka bentuk semula dari awal rangka kerja pemprosesan imej dengan memanfaatkan standard C++ baharu.
Satu ciri hebat pustaka Video++ ialah definisi mudah bagi kernel pemprosesan imej selari yang berjalan sehingga 32 kali lebih pantas daripada versi naif tidak dioptimumkan. Perpustakaan ini telah memasukkan beberapa ciri penting seperti bekas imej N-dimensi generik, set algoritma pemprosesan imej yang dipertingkatkan, warna isian, pengurusan memori yang lebih baik, sempadan isian, penggunaan sub-imej 3D dan banyak lagi.
Perpustakaan telah menyediakan ciri berguna untuk mengakses bekas imej yang menawarkan akses kepada penimbal piksel dan maklumat lain yang berguna untuk memproses imej. Ia juga menyediakan kebolehoperasian kepada openCV dan menyokong penukaran eksplisit kepada dan daripada jenis imej OpenCV.
Bermula dengan Video++
Sila gunakan arahan berikut untuk pemasangan yang lengkap. Video++ adalah pengepala sahaja jadi untuk mengakses semua ciri yang diperlukan, anda mesti menyertakan pengepala vpp.h. Anda juga perlu mendapatkan Eigen3 dan Boost pada sistem anda sebelum memasang Video++.
Pasang Video++ melalui arahan git
git clone https://github.com/matt-42/vpp.git
cd vpp
./install.sh your_install_prefix # Install iod and vpp in a given prefix
Pemprosesan Imej Selari melalui Perpustakaan C++
Pustaka Video++ sumber terbuka membolehkan pembangun perisian mentakrifkan kernel untuk memproses imej selari menggunakan arahan C++. Perkara yang menarik ialah kernel boleh berjalan 32 kali lebih cepat daripada yang biasa. Ia sama-sama menyebarkan pelaksanaan kernel ke atas semua teras CPU yang tersedia yang menjalankan beberapa utas yang berjalan pada beberapa teras. Ia menyokong ciri seperti mengisi sempadan dengan nilai, mengisi cermin sempadan, menetapkan penjajaran, mengakses piksel imej, menggunakan penapis pada imej dan sebagainya.
Penambahan Imej melalui C++
Pustaka Video++ sumber terbuka telah menyediakan fungsi lengkap untuk menambah imej menggunakan penapis mengikut piksel. Ia menawarkan satu set objek dan rutin generik yang membolehkan menulis pelaksanaan penapis mudah yang cekap dengan cepat. Banyak penapis pemprosesan imej adalah fungsi mudah yang mengisi piksel dengan nilai yang dikira, dengan itu tidak menampilkan kebergantungan antara pengiraan mengenai piksel yang berbeza.
Tambah Imej 2D melalui C++
int main()
{
using namespace vpp;
image2d img1(make_box2d(100, 200), _border = 3);
image2d img2({100, 200});
assert(&img1(0,0) == &img1[0][0]);
assert(&img1(0,0) == &(*img1.begin()));
assert(img1.domain() == img2.domain());
assert(img1.nrows() == 100);
assert(img1.ncols() == 200);
{
image2d img(make_box2d(5, 5), _border = 1);
assert(&img(0,0) == img.address_of(vint2(0,0)));
assert(&img(4,0) == img.address_of(vint2(4,0)));
auto s1 = img.subimage(img.domain());
assert(&s1(0,0) == s1.address_of(vint2(0,0)));
for (auto p : img.domain())
assert(img(p) == img[p[0]][p[1]]);
for (auto p : img.domain())
assert(img(p) == s1[p[0]][p[1]]);
}
}