2012-08-16 3 views
-2

전적으로 GPU 프로그래밍에 익숙합니다. GPU로 작업하기 전에 경험이 없으며, 몇 가지 기능이 있습니다. GPU에서 실행되도록 해당 기능을 변환해야합니다. 좋아, 나는 이미지 작업에 emgucv를 사용했다. 내 코드는 아래 표기되어 있습니다. 제발 도와주세요.emgu 코드를 GPU로 변환

public static Image Highlight(Image image) 
    { 
     if (image == null) 
     { 
     throw new ArgumentNullException("image"); 
     } 

     using (Image<Bgr, byte> originalImage = ConvertToEmgu(image)) 
     using (Image<Bgr, byte> resavedOriginalImage = ConvertToEmgu(ResaveImageWithGivenCompression(image))) 
     using (Image<Bgr, byte> errorLevelImage = (originalImage - resavedOriginalImage) * scalingFactor) 
     { 
     return errorLevelImage.ToBitmap(); 
     } 
    } 

    private static Image<Bgr, byte> ConvertToEmgu(Image image) 
    { 
     using (Bitmap bitmap = new Bitmap(image)) 
     { 
     return new Image<Bgr, byte>(bitmap); 
     } 
    } 

    private static Image ResaveImage(Image image) 
    { 
     EncoderParameters jpegEncoderParameters = new EncoderParameters(1); 
     ImageCodecInfo jpegWithGivenCompressionFormat = GetEncoderInfo("image/jpeg"); 

     jpegEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, compressionQuality); 

     using (MemoryStream resavedImageStream = new MemoryStream()) 
     { 
     image.Save(resavedImageStream, jpegWithGivenCompressionFormat, jpegEncoderParameters); 

     return Image.FromStream(resavedImageStream); 
     } 
    } 

    private static ImageCodecInfo GetEncoderInfo(string mimeType) 
    { 
     ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders(); 

     return encoders.FirstOrDefault(encoder => encoder.MimeType == mimeType); 
    } 
    } 
+1

이것은 정말 잘 조사되지 않은 질문입니다. 타겟 GPU에서 어떤 API/프레임 워크를 사용하고자하는지에 대해서도 언급하지 않았습니다. 당신이하고 싶은 일과 당신이 이해하지 못하는 것에 대한 더 많은 정보를 포함하도록 질문을 편집하십시오. – talonmies

+0

좋아, 내가 게시 한 코드로 GPU에서 이러한 기능을 실행하고 싶습니다. .NET Framework 3.5에서 작업하고 visualstudio 2008을 사용하고 있습니다. 내가 익숙하지 않은 것은이 기능에 GPU 지원을 추가하기 위해해야 ​​할 일이다. –

+0

당신은 이미 그 질문에 말했다. 그러나 * GPU 코드 작성을 계획하고있는 언어와 API에 대해서도 언급하지 않았습니다. 그것에 대해 생각조차하지 못하면 StackOverflow에 대한 구현 세부 사항에 대해 질문 할 준비가되지 않은 것입니다. – talonmies

답변

4
  • 먼저 답변을 다음 웹 사이트를보고하십시오 CUDA 2.0 이상을 지원하는 그래픽 카드가 필요합니다.
  • 그런 다음 NVidia에서 CUDA 드라이버를 설치해야합니다. CUDA 툴킷을 검색하십시오.
  • 은 그럼 당신은
  • 이 그럼 당신은
  • 그런 다음 적절한으로 모든 기능을 대체 CV.GPU 네임 스페이스를 사용할 필요가 (당신 는 OpenCV의 DLL을했던 것처럼) 프로젝트에서 CUDA DLL을 포함해야 GPU 버전. 코드에 OpenCV 기능이 표시되지 않으므로 을 대체 할 항목이 없습니다. (하지만 일부는 누락 될 수 있습니다)