it-source

Fast Cross-Platform C/C++ 이미지 프로세싱 라이브러리

criticalcode 2023. 11. 2. 21:51
반응형

Fast Cross-Platform C/C++ 이미지 프로세싱 라이브러리

이미지 처리를 위한 교차 플랫폼 및 고성능 이미지 라이브러리(컬러/컬러 히스토그램 크기 조정 및 찾기)는 무엇입니까?gui 필요 없습니다.C/C++입니다.

지금까지 제가 알아봤습니다.

  • OpenCV
  • 부스트의 일부로서 GIL
  • 데빌
  • CImg

나의 질문들

  • 위에 나열한 것들의 성능은 어떻습니까?
  • 다른 라이브러리는 무엇입니까?

당신의 의견은 대단히 감사합니다.

OpenCV의 성능은 상당히 우수합니다.대부분의 경우 충분할 것입니다.

성능을 향상시키기 위해 Intel IPP와 함께 OpenCV를 사용할 수도 있습니다. 이 제품은 무료가 아닌 상용 제품입니다.OpenCV가 IPP가 설치된 것을 감지하면 가능한 경우 IPP를 사용합니다.

세 번째 옵션으로 IPP를 직접 사용할 수 있습니다.IPP는 (Intel 아키텍처에서) 고성능을 목표로 설계되었습니다.인텔 SIMD 명령을 사용하는 데 최적화되어 있습니다.

이미지 매직은 꽤 인기가 많습니다.

MVTec의 HALCON만큼 뛰어난 기능과 성능을 본 적이 없는 것 같습니다.그것은 모든 종류의 컴퓨터 비전과 이미지 처리 알고리즘을 즉시 제공하고 실제 사례를 많이 제공합니다.이 라이브러리는 알고리즘이 허용할 수 있는 만큼 멀티스레딩을 사용하고 사용 가능한 경우 GPU를 사용합니다.매우 크로스 플랫폼이며 C, C++, C# 등 여러 언어로 프로토타입 코드(알고리즘)를 내보낼 수 있는 환상적인 IDE를 제공합니다.

이 라이브러리의 가장 좋은 특징 중 하나는 지역 객체를 다루는 방법입니다.스토리지와 마스크 처리 모두에서 믿을 수 없을 정도로 스마트하고 효율적입니다.안타깝게도 OpenCV는 여기서 배울 점이 많습니다.

이 패키지의 가장 큰 문제는 가격(엄청나게 높은 가격)이지만 런타임 라이센스(예: SaaS)를 배포할 필요가 없는 프로젝트를 수행하는 경우에는 심각한 이미지 처리 및 컴퓨터 비전이 필요한 경우에는 더 이상 확인하지 마십시오.

CxImage를 잊지 마십시오. 전 세계적으로 배포된 그래픽 집약적인 휴대폰 응용 프로그램에서 전문적으로 사용한 적이 있습니다. 완벽하게 작동하고 기능이 매우 풍부합니다.꼭 확인해 보세요!

저는 자유로운 크로스 플랫폼 C/C++ 과학적 이미지 처리 라이브러리인 libvips를 유지하는 데 도움을 돕습니다.이것은 빠르고 매우 큰 이미지에서도 잘 작동합니다.

10,000 x 10,000픽셀 RGB 팁을 로드하고, 모든 에지에서 100픽셀을 잘라내고, 10%를 축소하고, 다시 저장하는 매우 간단한 벤치마크를 수행했습니다.적어도 이 사소한 테스트에서 빕스는 제가 시도한 다른 어떤 것보다 2배 이상 빠릅니다.

C++ API는 여기에 문서화되어 있습니다.예를 들어,

#include <vips/vips8>

using namespace vips;

int
main( int argc, char **argv )
{
        // startup, load plugins, init support libraries, etc.
        if (VIPS_INIT(argv[0]))
                vips_error_exit(NULL);  

        // the "sequential" access hint means we plan to only read this image
        // top-to-bottom (eg. no 90 degree rotates) ... this means libvips can 
        // stream the image and run decode and processing in 
        // parallel on separate threads
        VImage image = VImage::new_from_file(argv[1],
                VImage::option()->set("access", "sequential")); 

        // shrink to 20% and find the histogram
        VImage hist = image.resize(0.2).hist_find(); 

        hist.write_to_file(argv[2]);

        return 0;
}

다음과 같은 입력 및 출력 이미지 형식으로 이 프로그램을 실행할 수 있습니다.

$ g++ -g -Wall resize.cpp `pkg-config vips-cpp --cflags --libs`
$ ./a.out ~/pics/wtc.jpg x.csv

그리고 JPG 입력을 읽고 히스토그램을 CSV 파일에 쓸 것입니다.

간편하고 무료인 오픈 소스 크로스 플랫폼 이미지 처리 라이브러리 심드가 있습니다.그 설명에 의하면 다음과 같습니다.

픽셀 포맷 변환, 이미지 스케일링 및 필터링, 이미지에서 통계 정보 추출, 모션 감지 등 이미지 처리에 유용한 고성능 알고리즘을 제공합니다.

알고리즘은 다양한 SIMD CPU 확장을 사용하여 최적화됩니다. SSE, SSE2, SSE4.1, SSE4.2, AVX, AVX2 및 AVX-512(x86/x64용), VMX(Altivec) 및 VSX(Power7), NEON(ARM용).

IM을 보고 싶으실 수도 있습니다.여러 플랫폼을 기반으로 구축되며, (모듈형) 이미지 파일 형식, 다양한 이미지 표현, 다양한 변환 및 연산자를 지원합니다.IM 라이브러리를 기반으로 영상 처리 연산자를 설명하기 위한 GUI 도구인 IMLab도 이용할 수 있습니다.

또한 VTKITK가 있으며, 엄청난 양의 다양한 이미지 처리 알고리즘이 있습니다.

다음도 있습니다.

ExactImage는 빠른 C++ 이미지 처리 라이브러리입니다.다른 많은 라이브러리 프레임워크와 달리 기본적으로 여러 색 공간과 비트 깊이에서 작동이 가능하여 메모리 및 계산 요구 사항이 적습니다.

우리는 애큐소프트를 꽤 오랫동안 사용했지만, 매우 구체적인 이유로 윈도우에만 존재하는 LeadTools로 전환했습니다.애큐소프트는 리드 툴보다 인터페이스가 매우 명확하고 훨씬 잘 정의되어 있습니다.두 라이브러리 모두 매우 강력하며 두 라이브러리 모두 기존의 모든 파일 형식을 거의 모두 읽을 수 있다고 주장합니다.둘 다 상당히 반응이 좋은 지지를 받고 있습니다.

언급URL : https://stackoverflow.com/questions/796364/fast-cross-platform-c-c-image-processing-libraries

반응형