데이터 베이스 MySQL 튜토리얼 利用OpenCL对OpenCV并行化心得(2)

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

Jun 07, 2016 pm 03:20 PM
opencv 사용 평행한 경험

上文说到了没有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倍多一点

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

pip 패키지 관리자를 사용하여 OpenCV 학습 가이드를 빠르게 설치 pip 패키지 관리자를 사용하여 OpenCV 학습 가이드를 빠르게 설치 Jan 18, 2024 am 09:55 AM

특정 코드 예제가 필요한 OpenCV 튜토리얼을 쉽게 설치하려면 pip 명령을 사용하세요. OpenCV(OpenSource 컴퓨터 비전 라이브러리)는 개발자가 이미지를 빠르게 구축하는 데 도움이 되는 수많은 컴퓨터 비전 알고리즘과 기능을 포함하고 있습니다. 및 비디오 처리 관련 애플리케이션. OpenCV를 사용하기 전에 먼저 OpenCV를 설치해야 합니다. 다행스럽게도 Python은 타사 라이브러리를 관리할 수 있는 강력한 도구인 pip를 제공합니다.

프로젝트 문서 관리를 위해 GitLab을 사용하는 방법 프로젝트 문서 관리를 위해 GitLab을 사용하는 방법 Oct 20, 2023 am 10:40 AM

프로젝트 문서 관리를 위해 GitLab을 사용하는 방법 1. 배경 소개 소프트웨어 개발 프로세스에서 프로젝트 문서는 개발 팀이 프로젝트의 요구 사항과 설계를 이해하는 데 도움이 될 뿐만 아니라 테스트 팀에 참조를 제공할 수도 있습니다. 그리고 고객. 프로젝트 문서의 버전 관리 및 팀 협업을 용이하게 하기 위해 프로젝트 문서 관리에 GitLab을 사용할 수 있습니다. GitLab은 Git 기반의 버전 관리 시스템으로, 코드 관리 지원 외에도 프로젝트 문서 관리도 가능합니다. 2. GitLab 환경설정 먼저, 저는

OpenCV 설치 튜토리얼: PyCharm 사용자가 꼭 봐야 할 튜토리얼 OpenCV 설치 튜토리얼: PyCharm 사용자가 꼭 봐야 할 튜토리얼 Feb 22, 2024 pm 09:21 PM

OpenCV는 컴퓨터 비전 및 이미지 처리를 위한 오픈 소스 라이브러리로, 기계 학습, 이미지 인식, 비디오 처리 및 기타 분야에서 널리 사용됩니다. OpenCV를 사용하여 개발할 때 프로그램을 더 효과적으로 디버깅하고 실행하기 위해 많은 개발자는 강력한 Python 통합 개발 환경인 PyCharm을 선택합니다. 이 문서에서는 PyCharm 사용자에게 특정 코드 예제와 함께 OpenCV 설치 튜토리얼을 제공합니다. 1단계: Python 설치 먼저 Python이 설치되어 있는지 확인하세요.

Java를 사용하여 OpenCV에서 화살표로 선을 그리는 방법은 무엇입니까? Java를 사용하여 OpenCV에서 화살표로 선을 그리는 방법은 무엇입니까? Aug 20, 2023 pm 02:41 PM

JavaOpenCV 라이브러리의 org.opencv.imgproc 패키지에는 입력 이미지를 처리하는 다양한 방법을 제공하는 Imgproc라는 클래스가 포함되어 있습니다. 이미지에 기하학적 모양을 그리는 일련의 방법을 제공합니다. 화살표 선을 그리려면 이 클래스의 arrowedLine() 메서드를 호출해야 합니다. 이 메서드는 다음 매개 변수를 허용합니다. 선을 그릴 이미지를 나타내는 Mat 개체. 선 사이의 두 점을 나타내는 Point 개체입니다. 선 색상을 나타내는 Scalar 객체입니다. (BGR) 선 두께를 나타내는 정수입니다(기본값: 1). 예 importorg.opencv.core.Core;importo

PHP 및 OpenCV 라이브러리를 사용하여 비디오 처리를 구현하는 방법은 무엇입니까? PHP 및 OpenCV 라이브러리를 사용하여 비디오 처리를 구현하는 방법은 무엇입니까? Jul 17, 2023 pm 09:13 PM

PHP 및 OpenCV 라이브러리를 사용하여 비디오 처리를 구현하는 방법은 무엇입니까? 개요: 비디오 처리는 현대 과학 기술 응용 분야에서 중요한 기술이 되었습니다. 이 기사에서는 OpenCV 라이브러리와 결합된 PHP 프로그래밍 언어를 사용하여 몇 가지 기본 비디오 처리 기능을 구현하고 해당 코드 예제를 첨부하는 방법을 소개합니다. 키워드: PHP, OpenCV, 비디오 처리, 코드 예제 서론: 인터넷의 발달과 스마트폰의 대중화로 인해 비디오 콘텐츠는 사람들의 삶에 없어서는 안될 부분이 되었습니다. 하지만 영상 편집을 위해서는

컴퓨터 비전 애플리케이션을 위해 PHP에서 OpenCV 사용 컴퓨터 비전 애플리케이션을 위해 PHP에서 OpenCV 사용 Jun 19, 2023 pm 03:09 PM

컴퓨터 비전(Computer Vision)은 인공지능 분야의 중요한 분야 중 하나로, 컴퓨터가 이미지, 영상 등의 시각적 신호를 자동으로 인식하고 이해하며, 인간과 컴퓨터의 상호 작용, 자동화된 제어 등의 응용 시나리오를 실현할 수 있게 해줍니다. OpenCV(OpenSourceComputerVisionLibrary)는 컴퓨터 비전, 기계 학습, 딥 러닝 및 기타 분야에서 널리 사용되는 인기 있는 오픈 소스 컴퓨터 비전 라이브러리입니다. 이 기사에서는 사용 방법을 소개합니다.

C#의 일반적인 성능 조정 및 코드 리팩토링 기술과 솔루션 C#의 일반적인 성능 조정 및 코드 리팩토링 기술과 솔루션 Oct 09, 2023 pm 12:01 PM

C#의 일반적인 성능 조정 및 코드 리팩토링 기술과 솔루션 소개: 소프트웨어 개발 프로세스에서 성능 최적화와 코드 리팩토링은 무시할 수 없는 중요한 링크입니다. 특히 C#을 사용하여 대규모 애플리케이션을 개발할 때 코드를 최적화하고 리팩토링하면 애플리케이션의 성능과 유지 관리 가능성을 향상시킬 수 있습니다. 이 문서에서는 몇 가지 일반적인 C# 성능 조정 및 코드 리팩터링 기술을 소개하고 해당 솔루션과 특정 코드 예제를 제공합니다. 1. 성능 튜닝 기술: 적절한 컬렉션 유형 선택: C#은 List, Dict와 같은 다양한 컬렉션 유형을 제공합니다.

PHP 및 OpenCV 라이브러리를 사용하여 이미지 샤프닝을 달성하는 방법은 무엇입니까? PHP 및 OpenCV 라이브러리를 사용하여 이미지 샤프닝을 달성하는 방법은 무엇입니까? Jul 17, 2023 am 08:31 AM

PHP 및 OpenCV 라이브러리를 사용하여 이미지 선명도를 얻는 방법은 무엇입니까? 개요: 이미지 선명화는 이미지의 선명도와 가장자리 강도를 향상시키는 데 사용되는 일반적인 이미지 처리 기술입니다. 이 기사에서는 PHP와 OpenCV 라이브러리를 사용하여 이미지 샤프닝을 구현하는 방법을 설명합니다. OpenCV는 풍부한 이미지 처리 기능을 제공하는 강력한 오픈 소스 컴퓨터 비전 라이브러리입니다. OpenCV의 PHP 확장을 사용하여 이미지 선명화 알고리즘을 구현하겠습니다. 1단계: OpenCV 및 PHP 확장 설치 먼저

See all articles