65.9K
CodeProject 正在变化。 阅读更多。
Home

Adobe Photoshop 增强版(基于开放标准, 强化技术包括 Intel® HD 和 Iris™ 图形)

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2014年10月16日

CPOL

12分钟阅读

viewsIcon

12423

在本文中,我们将探讨 Adobe 工程师在过去几年中为增强 Photoshop 所做的努力,利用 OpenGL* 和 OpenCL™ 来提高硬件利用率。

Intel® Developer Zone 提供用于跨平台应用开发、平台和技术信息、代码示例以及同行专业知识的工具和操作指南,以帮助开发人员创新并取得成功。加入我们的社区,了解 物联网AndroidIntel® RealSense™ 技术Windows,下载工具,访问开发套件,与志同道合的开发人员分享想法,并参与黑客松、竞赛、路演和本地活动。

相关文章
面向第四代英特尔®酷睿™处理器的英特尔®处理器显卡开发人员指南
触摸和传感器
如何创建可用的触摸UI
如何调整触摸控件

引言

在本文中,我们将探讨 Adobe 工程师在过去几年中为增强 Photoshop 所做的努力,利用 OpenGL* 和 OpenCL™ 来提高硬件利用率。Adobe 团队选择了“模糊”和“智能锐化”这两个功能作为其近期努力的重点,因为它们在处理速度和质量方面均未达到最佳效果。我们将在本文中讨论这两个功能的结果。

开放标准语言、Adobe Photoshop 和 Intel

OpenGL(开放图形语言)多年来一直用于提升跨平台的渲染性能和资源利用率。OpenCL(开放计算语言)是一项免版税的开放标准,用于在中央处理器、图形处理器和其他处理器上进行可移植的通用并行编程。OpenCL 标准是对现有 OpenGL API 的补充,它将通用计算例程添加到 OpenGL 使用图形处理器进行渲染工作的能力中。OpenCL 为开发人员提供了一个统一的编程环境,以便在给定平台内的所有处理资源上执行代码。

Adobe Photoshop 是行业领先的图形处理应用程序,用于图形编辑和处理。Photoshop 是一款对处理能力和内存要求很高的应用程序,它需要计算机提供尽可能高的性能。为了增强其图形处理能力,Adobe 在 Photoshop 的许多版本中都使用了开放标准。现在,它已更新以利用 OpenCL,从而实现了更高水平的性能。

Intel 为本报告提供了测试。Intel 还提供一系列工具和 SDK,以加速视觉计算的开发。其中包括 Intel® 处理器开发人员指南(页面上包含指向各个代 Intel 图形处理器指南的链接)。最新指南是 第四代 Intel® Core™ 处理器图形开发人员指南(现已包含 OpenGL)Intel® OpenCL 应用程序 SDK,以及一个致力于 视觉计算 的网站。

对于像 Photoshop 这样强大的应用程序,使用 OpenGL 和 OpenCL 等开放标准可以提高性能,并使处理例程更容易跨平台使用,并与其他 Adobe 产品集成。

Photoshop 对 OpenGL 和 OpenCL 标准的应用

几年前,在 Adobe 的 Creative Suite* 4 版本 Photoshop (Photoshop CS4) 中,Adobe 开发者将 OpenGL 的重点放在增强画布和 3D 交互上。他们使用 OpenGL API 实现平滑缩放、平移、画布旋转、像素网格和 3D 轴/灯光,以提高性能。在首选项中打开这些功能,启用“使用图形处理器”,选择“高级设置”按钮,从下拉菜单中选择“高级绘图模式”,然后勾选“使用图形处理器加速计算”和“使用 OpenCL”复选框。有关 Photoshop 用户界面中的推荐设置,请参阅图 1 和图 2。

图 1:Photoshop* 首选项对话框中的图形设置

图 2:在绘图模式下拉菜单中选择“高级”

在 Photoshop CS5 中,开发人员使用 OpenGL 来加速用户界面 (UI) 并添加 Pixel Bender 插件。专门针对的 UI 功能包括拖动缩放、HUD 颜色选择器、颜色采样环、Repousse 和 3D 叠加。有了这些新功能,OpenGL 模式扩展到包含基本、普通和高级方法。

然后,在 Photoshop CS6 中,该团队通过 OpenGL 和 OpenCL 的标准功能增强了内容编辑。开发人员使用 OpenGL 添加了自适应广角、液化、油画、木偶变形、光照效果和 3D 增强功能。OpenCL 标准用于添加倾斜/移轴效果以及模糊功能。

如今,随着 Adobe 最新发布的 Creative Suite Creative Cloud,进一步增强了 Photoshop 应用程序,并提供了智能锐化以及“使用图形处理器”和“使用 OpenCL”的可选模式。

支持 OpenGL 和 OpenCL 的 Intel HD Graphics 设备

以下 Intel 图形设备应默认启用 OpenGL 和 OpenCL 图形加速

  • 第四代 Intel® Core™ 处理器
    • Intel® HD Graphics 4200、4400、4600、P4600、P4700
    • HD Graphics 5000
    • Iris™ Graphics 5100
    • Iris™ Pro Graphics 5200
  • 第三代 Intel® Core™ 处理器
    • Intel® HD Graphics 4000、P4000
  • 第二代 Intel® Core™ 处理器
    • Intel® HD Graphics 3000、P3000

开发具体的 Photoshop 增强功能

开发人员是如何取得这些成果的?Photoshop 使用图层系统将其许多高级功能应用于图像。图 3 通过显示非常简单图像的三个图层作为白色空间来阐释这个概念。效果,即示例中的红色和蓝色图层,是堆栈中的独立图层。可以应用于图层的效果包括锐化、模糊,甚至去除红眼。可以在不更改原始文件的情况下将效果应用于最终图像。这些图层还可以排序、堆叠和组合以提供混合效果,如图中右侧所示,例如,将红色和蓝色组合得到紫色。此外,还有称为“蒙版图层”的特殊图层,允许您将效果的应用限制在图像的特定区域。

图 3:独立(左)和组合(右)图层

图像组合方面也适用于 Photoshop 纹理。Photoshop 纹理是指图层的内​​容,然后将其与其他图层混合或叠加以“纹理化”图像。请注意,下方左侧图像中的砖块是如何在应用低不透明度时为中间图像中雕像的斗篷提供纹理的。

图 4:在 Photoshop* 中使用纹理的示例

Adobe 使用 OpenGL API 来增强 Photoshop 的纹理/图层效果。在 OpenGL 高级模式下,OpenCL “– int format –GL_RGBA16F_ARB”调用使着色器工具能够应用棋盘格合成、色调映射和颜色匹配。

锐化焦点

体育摄影师广泛使用锐化步骤,因为只需微调几个控件,就可以极大地影响动作照片的冲击力。图 5 展示了如何通过在照片编辑中应用锐化步骤来改进细节。请注意,“之后”右侧图像中的文本、星星,甚至笔触细节都更加明显。

图 5:原始图像(左)和锐化后(右)

然而,锐化步骤可能会产生一些不希望的副作用。原始图像中相对清晰或不重要的细节可能会出现伪影,类似于增强图像的“噪点”,产生光晕效果。在此版本中,Adobe 对传统的智能锐化进行了改造,引入了一种基于块的“降噪和锐化”算法,该算法使用 OpenCL 标准实现。新的基于块的算法可以生成锐化后的图像,而不会产生任何光晕效果。此外,降噪步骤可以抑制“锐化时噪点会增强”的问题。请比较下方图 6、图 7 和图 8 中的图像。基于此结果,Adobe 期待利用这些标准进一步改进所有锐化工具。

图 6:原始文本图像

图 7:应用传统智能锐化并出现光晕效果后的图像

图 8:应用基于块的智能锐化后的图像

聚焦模糊

通过使用 OpenCL 改进的另一个编辑工具功能是模糊工具。有许多方法可以强调或弱化图像的某个部分。可以在拍摄照片时影响许多质量,但可以通过后期处理来改善(至少是改变)照片的影响力。去除红眼和裁剪是非常常见的后期处理任务,但图像锐度也可以得到改善。图像区域的特定锐度可以产生很大的影响。

图 9:达·芬奇的杰作《蒙娜丽莎》(乔孔多·弗朗切斯科的妻子丽莎·格拉尔迪尼肖像)[8]

在他的杰作《蒙娜丽莎》中,达·芬奇(图 9)[8] 通过将人物置于前景,而让背景的乡村风景略微模糊,从而突出了他的主题。通过模糊背景,他帮助观众将注意力集中在他的主题上,这是绘画中最重要的部分,而不是背景。以下是一个模糊如何改进更现代图像的示例。找到照片的主要主题可能很困难,因此模糊有助于提炼图像的主题。我使用了图 6 中锐化过的图像,并通过应用模糊工具进一步强调了图像中的中心星星,其结果是右侧图像(图 10)中星星的清晰度。模糊改变了我们对图像的看法,使得星星明显成为焦点。总之,有很多方法可以(有意地)模糊图像,这是最新方法之一。

图 10:原始图像(左)、锐化(中),然后添加模糊(右)以示强调

将模糊添加到图像就像使用彩色蜡笔一样,只是鼠标是蜡笔,颜色是模糊功能。要应用模糊,您需要选择模糊工具,将工具“画笔”(一个可以从 1 个屏幕像素到整个图像大小调整大小的光标)的大小调整为要模糊的图像区域的大小,然后单击并按住鼠标,同时“涂抹或擦洗”要模糊的图像区域。涂抹动作越多,应用于图像区域的模糊越多。

Intel 提高了图形性能

添加 OpenCL 模糊工具的实践过程有些挑战,并提供了一些很好的学习机会。团队希望通过利用主机平台上所有可能的资源来平衡工作负载。跨平台支持至关重要,包括 Windows* 和 Mac* 操作系统。这些因素促使他们选择了 OpenCL。团队最终接手了 Photoshop 中现有的模糊工具,并将其从优化的 CPU 代码移植到了 OpenCL 内核。

Adobe 希望降低模糊的复杂性,因为在 OpenCL 之前,它需要多个命令队列在多个线程上运行。他们还遇到了资源限制,例如低端视频子系统上的超时和内存不足故障。最后,通过采用基于 OpenCL 的解决方案,可以减少平台差异,如驱动程序堆栈和各种编译器的使用。OpenCL 使他们能够将图像的一部分缓存到本地内存,并将图像分解成较小的 2k x 2k 块以供图形处理器处理,从而减少了这些挑战。通过利用 GPU,这些改进提高了可靠性,并将滤镜处理时间提高了 4 到 8 倍。

Intel 的测试显示了以下 Photoshop 操作的性能提升,因为正如下面的图表(图 11)所示,Intel HD 图形的几代产品在可用执行单元和内存带宽方面都有所提高。[1]

图 11:Photoshop* 结合 OpenGL* 在 Intel HD Graphics 各代产品上的性能

当启用和禁用 OpenGL 或 OpenCL 功能进行测试时,我们可以看到这些例程在以下图表(图 12)中为液化滤镜和场模糊工具带来了显著的性能提升。液化和模糊处理时间(以秒为单位)在 Intel® HD 4600 上进行了标准化(GPU 加速关闭/开启)。[1]

图 12:Photoshop* 工具在启用/禁用标准时的性能

这项工作是值得的。与 OpenCL 硬件加速关闭相比,此新模糊功能的性能提高了 3 倍的处理时间,具体取决于工作负载和模糊半径的大小(图 13)。[1]

图 13:模糊执行时间示例(以秒为单位)对比

在较小的工作负载中,一般应用程序处理占用了大部分时间,因此较大的工作负载在处理时间上显示出更好的改进。启用 OpenCL 加速后,CPU 和 GPU 都能得到高效利用,多线程应用程序的许多核心都向图形处理器提交工作。图形处理单元的使用率最低为 70%,内存利用率在 10%-36% 之间,具体取决于图形子系统。最后,图形管道没有任何停顿,从而改善了用户体验。

摘要

添加基于标准的处理例程使 Adobe 能够继续其在每个版本中增强 Photoshop 性能的传统。通过在 Intel HD Graphics 设备上添加基于 OpenCL 的加速,用户可以体验到性能的提升,并能够几乎实时地评估整个图像的模糊滤镜效果。在这些滤镜中添加 OpenCL 之前,无法实现这种完整的图像体验,而这一变化使得创建引人注目的图像更加高效。在添加 OpenCL 之前,只能预览图像的一小部分才能应用效果。同样,用户可以在进行全屏调整时查看其智能锐化滤镜,并更快地获得所需的最终图像。现在有了 OpenCL,Photoshop 显然变得更好了。

[1] 结果基于内部 Intel 分析估算,仅供参考。系统硬件或软件设计或配置的任何差异都可能影响实际性能。

参考资料和资源

Intel、Intel 标识和 Iris 是 Intel Corporation 在美国和/或其他国家/地区的商标。
OpenCL 和 OpenCL 徽标是 Apple Inc. 的商标,已获得 Khronos 许可使用。
版权所有 © 2014 英特尔公司。保留所有权利。
*其他名称和品牌可能被声明为他人的财产。

© . All rights reserved.