Rumah pangkalan data tutorial mysql 利用OpenCL对OpenCV并行化心得(2)

利用OpenCL对OpenCV并行化心得(2)

Jun 07, 2016 pm 03:20 PM
opencv guna selari Pengalaman

上文说到了没有ROI的情况下怎么优化add,现在看看有roi的情况。 ROI是opencv里面的一个特性,也可以说是图像处理库都有的特性,它的意思是对于整个一幅图像,只处理被ROI框起来的那一块,可以看做是一个mask。如果不注重性能,最简单的方法就是加上一个offse

上文说到了没有ROI的情况下怎么优化add,现在看看有roi的情况。

ROI是opencv里面的一个特性,也可以说是图像处理库都有的特性,它的意思是对于整个一幅图像,只处理被ROI框起来的那一块,可以看做是一个mask。如果不注重性能,最简单的方法就是加上一个offset即可

__kernel void matrix_add(__global uchar* src1,__global uchar* src2, __global uchar* dst, int rows, int cols,int src1_step,int src2_step,int dst_step,int src1_offset, int src2_offset, int dst_offset)

{

int x=get_global_id(0);

int y=get_global_id(1);

if(x

dst[mad24(y,dst_step,x+dst_offset)]=src1[mad24(y,src1t_step,x+src1_offset)]+src2[mad24(y,src2_step,x+src2_offset)];

}

但是在每次读4个点的时候不能这么做,因为这有对齐问题。比如一个矩阵是17列1行,ROI设置的是后16个点,起始地址就不会是4的整数倍,这样在指针强制转换的时候会出现未定义的情况,结果是错的。除此之外,长度不是4的倍数也会出现问题,所以要使用一些技巧。一个办法是可以先强制对齐地址,多读一些数据,判断是否是需要的,不是需要的就扔掉

__kernel void matrix_add (__global uchar *src1, int src1_step, int src1_offset,
                             __global uchar *src2, int src2_step, int src2_offset,
                             __global uchar *dst,  int dst_step,  int dst_offset,
                             int rows, int cols, int dst_step1)
{
    int x = get_global_id(0);
    int y = get_global_id(1);

    if (x     {
        x = x
        #define dst_align (dst_offset & 3)
        int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
        int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);

        int dst_start  = mad24(y, dst_step, dst_offset);
        int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
        int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);

        uchar4 src1_data = vload4(0, src1 + src1_index);
        uchar4 src2_data = vload4(0, src2 + src2_index);

        uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
        short4 tmp      = convert_short4_sat(src1_data) + convert_short4_sat(src2_data);
        uchar4 tmp_data = convert_uchar4_sat(tmp);

        dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0         dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1         dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2         dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3
        *((__global uchar4 *)(dst + dst_index)) = dst_data;
    }
}

由于为了处理对齐多出来很多额外的操作,所以速度并不是理论上的4倍,而是2倍多一点

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pasang panduan kajian OpenCV dengan pantas menggunakan pengurus pakej pip Pasang panduan kajian OpenCV dengan pantas menggunakan pengurus pakej pip Jan 18, 2024 am 09:55 AM

Gunakan arahan pip untuk memasang tutorial OpenCV dengan mudah, yang memerlukan contoh kod khusus OpenCV (OpenSource Computer Vision Library) ialah perpustakaan penglihatan komputer sumber terbuka Ia mengandungi sejumlah besar algoritma dan fungsi penglihatan komputer, yang boleh membantu pemaju membina imej dan aplikasi berkaitan pemprosesan video. Sebelum menggunakan OpenCV, kita perlu memasangnya terlebih dahulu. Nasib baik, Python menyediakan pip alat yang berkuasa untuk mengurus perpustakaan pihak ketiga

Cara menggunakan GitLab untuk pengurusan dokumen projek Cara menggunakan GitLab untuk pengurusan dokumen projek Oct 20, 2023 am 10:40 AM

Cara menggunakan GitLab untuk pengurusan dokumen projek 1. Pengenalan latar belakang Dalam proses pembangunan perisian, dokumen projek adalah maklumat yang sangat penting, mereka bukan sahaja dapat membantu pasukan pembangunan memahami keperluan dan reka bentuk projek, tetapi juga memberikan rujukan kepada pasukan ujian dan pelanggan. Untuk memudahkan kawalan versi dan kerjasama pasukan dokumen projek, kami boleh menggunakan GitLab untuk pengurusan dokumen projek. GitLab ialah sistem kawalan versi berdasarkan Git Selain menyokong pengurusan kod, ia juga boleh mengurus dokumen projek. 2. Persediaan persekitaran GitLab Pertama, I

Tutorial pemasangan OpenCV: mesti dilihat untuk pengguna PyCharm Tutorial pemasangan OpenCV: mesti dilihat untuk pengguna PyCharm Feb 22, 2024 pm 09:21 PM

OpenCV ialah perpustakaan sumber terbuka untuk penglihatan komputer dan pemprosesan imej, yang digunakan secara meluas dalam pembelajaran mesin, pengecaman imej, pemprosesan video dan bidang lain. Apabila membangun menggunakan OpenCV, untuk menyahpepijat dan menjalankan program dengan lebih baik, ramai pembangun memilih untuk menggunakan PyCharm, persekitaran pembangunan bersepadu Python yang berkuasa. Artikel ini akan memberikan pengguna PyCharm tutorial pemasangan untuk OpenCV, dengan contoh kod khusus. Langkah Pertama: Pasang Python Pertama, pastikan anda telah memasang Python

Bagaimana untuk melukis garisan dengan anak panah dalam OpenCV menggunakan Java? Bagaimana untuk melukis garisan dengan anak panah dalam OpenCV menggunakan Java? Aug 20, 2023 pm 02:41 PM

Pakej org.opencv.imgproc pustaka JavaOpenCV mengandungi kelas yang dipanggil Imgproc yang menyediakan pelbagai kaedah untuk memproses imej input. Ia menyediakan satu set kaedah untuk melukis bentuk geometri pada imej. Untuk melukis garisan anak panah, anda perlu memanggil kaedah arrowedLine() kelas ini. Kaedah ini menerima parameter berikut: objek Mat yang mewakili imej di mana garisan akan dilukis. Objek titik mewakili dua titik antara garisan. dilukis. Objek skalar yang mewakili warna garisan. (BGR) Integer yang mewakili ketebalan garisan (lalai: 1). Contoh importorg.opencv.core.Core;importo

Bagaimana untuk melaksanakan pemprosesan video menggunakan perpustakaan PHP dan OpenCV? Bagaimana untuk melaksanakan pemprosesan video menggunakan perpustakaan PHP dan OpenCV? Jul 17, 2023 pm 09:13 PM

Bagaimana untuk melaksanakan pemprosesan video menggunakan perpustakaan PHP dan OpenCV? Abstrak: Pemprosesan video telah menjadi teknologi penting dalam aplikasi sains dan teknologi moden. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan PHP yang digabungkan dengan perpustakaan OpenCV untuk melaksanakan beberapa fungsi pemprosesan video asas, dan melampirkan contoh kod yang sepadan. Kata kunci: PHP, OpenCV, pemprosesan video, contoh kod Pengenalan: Dengan perkembangan Internet dan populariti telefon pintar, kandungan video telah menjadi bahagian yang amat diperlukan dalam kehidupan orang ramai. Walau bagaimanapun, untuk mencapai penyuntingan video dan

Menggunakan OpenCV dalam PHP untuk aplikasi penglihatan komputer Menggunakan OpenCV dalam PHP untuk aplikasi penglihatan komputer Jun 19, 2023 pm 03:09 PM

Penglihatan Komputer (Computer Vision) adalah salah satu cabang penting dalam bidang kecerdasan buatan Ia membolehkan komputer untuk secara automatik melihat dan memahami isyarat visual seperti imej dan video, dan merealisasikan senario aplikasi seperti interaksi manusia-komputer dan kawalan automatik. OpenCV (OpenSourceComputerVisionLibrary) ialah perpustakaan penglihatan komputer sumber terbuka yang popular yang digunakan secara meluas dalam penglihatan komputer, pembelajaran mesin, pembelajaran mendalam dan bidang lain. Artikel ini akan memperkenalkan cara menggunakan

Penalaan prestasi biasa dan teknik dan penyelesaian pemfaktoran semula kod dalam C# Penalaan prestasi biasa dan teknik dan penyelesaian pemfaktoran semula kod dalam C# Oct 09, 2023 pm 12:01 PM

Penalaan prestasi biasa dan teknik pemfaktoran semula kod dan penyelesaian dalam C# Pengenalan: Dalam proses pembangunan perisian, pengoptimuman prestasi dan pemfaktoran semula kod ialah pautan penting yang tidak boleh diabaikan. Terutama apabila membangunkan aplikasi berskala besar menggunakan C#, mengoptimumkan dan memfaktorkan semula kod boleh meningkatkan prestasi dan kebolehselenggaraan aplikasi. Artikel ini akan memperkenalkan beberapa teknik penalaan prestasi C# biasa dan teknik pemfaktoran semula kod, dan menyediakan penyelesaian yang sepadan dan contoh kod khusus. 1. Kemahiran penalaan prestasi: Pilih jenis koleksi yang sesuai: C# menyediakan pelbagai jenis koleksi, seperti Senarai, Dict

Bagaimana untuk mencapai penajaman imej menggunakan perpustakaan PHP dan OpenCV? Bagaimana untuk mencapai penajaman imej menggunakan perpustakaan PHP dan OpenCV? Jul 17, 2023 am 08:31 AM

Bagaimana untuk mencapai penajaman imej menggunakan perpustakaan PHP dan OpenCV? Gambaran Keseluruhan: Penajaman imej ialah teknik pemprosesan imej yang biasa digunakan untuk meningkatkan kejelasan dan kekuatan tepi imej. Dalam artikel ini, kami akan membincangkan cara melaksanakan penajaman imej menggunakan PHP dan perpustakaan OpenCV. OpenCV ialah perpustakaan penglihatan komputer sumber terbuka yang berkuasa yang menyediakan fungsi pemprosesan imej yang kaya. Kami akan menggunakan sambungan PHP OpenCV untuk melaksanakan algoritma penajaman imej. Langkah 1: Pasang sambungan OpenCV dan PHP Pertama, kami perlukan

See all articles