【问题标题】:can GPU computing power be used for image conversion(tiff to jpeg)? if yes how to achieve itGPU计算能力可以用于图像转换(tiff到jpeg)吗?如果是,如何实现
【发布时间】:2016-04-09 02:22:44
【问题描述】:

在我的场景中,我从设备获取屏幕(它只生成 tiff 图像)并将其传输到 jpeg 并通过网络发送到客户端(客户端仅支持 jpeg 编码)

java code
    public byte[] getscreen(){
    /*
    logic for fetching tiff image from the device
    */
     if(tiffimage == null )
     return null;
     byteOutput = new ByteArrayOutputStream();
     ImageIO.write(tiffImage, "jpeg", byteOutput);
    return byteOutput;
    }

设备生成图像需要 10 毫秒 - 1 秒,具体取决于设备的分辨率(请注意,在这一侧无法进行任何更改,它只会生成 tiff 图像),大小为 3 MB -12 MB 取决于分辨率。

现在将图像转换为 JPEG 需要一些时间。我的问题是,我们能否使用 GPU 功能将图像从 tiff 转换为 JPEG,以便在客户端获得改进的 FPS?

P.S: 该应用程序正在各种具有显卡的机器上运行,例如(NVDIA、AMD、英特尔高清显卡) 我想知道这是否可以做到,如果可以,如何解决。

【问题讨论】:

  • 不确定 GPU 在转换图像编解码器方面是否比 CPU 工作得更好 这里是一个类似问题的链接stackoverflow.com/questions/7662773/…
  • 这里也一样:使用 gpu 比 cpu 更好:stackoverflow.com/questions/22866901/…
  • @MartinFrank 它不是必然更好,但它可能更好。并且根据任务(如您链接到的答案中所述),GPU 可能会带来 显着 加速(但我不知道这是否适用于 JPG 压缩)。无论如何,NVIDIA NPP 包含一些用于 JPG 压缩的子程序,因此这可能是一个现实的应用案例。
  • 您的应用程序是否在并行线程中工作(一个用于拍摄图像,一个用于转换图像)我希望您解决了正确的问题...

标签: java gpu gpuimage


【解决方案1】:

MPEG 大致就是这样:大量的 JPEG 图像编码操作一个接一个,加上一些涉及 P 帧差异的逻辑等。我曾经使用 GPU 编写了一个简单的 MPEG 编码器,它提供了一些加速因子(不要'虽然不记得确切多少)。也就是说,为了正确回答您的问题:是的,可能存在 一些 时差,但仅对于 一张 图片,这种差异可能可以忽略不计,包括将图片数据卸载到GPU设备等

【讨论】:

  • 图片获取是一个连续的任务(客户端与服务器建立连接后请求图片),当从设备获取图片时,图片会发送到客户端,可以连接1-4个设备到服务器和客户端可以询问 1-4 个设备屏幕。我想通过克服转换时间来提高 FPS(转换时间需要 10 毫秒 - 1 秒,具体取决于图像的大小)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 2012-06-12
  • 2011-03-21
  • 1970-01-01
相关资源
最近更新 更多