RGB to Grayscale
2026/6/6大约 1 分钟
RGB to Grayscale
题目描述
编写一个 GPU 程序,在 GPU 上将 RGB 图像转换为灰度图像。输入 RGB 图像表示为 32 位浮点值的一维数组,使用标准的 RGB 到灰度转换公式计算对应的灰度图像:
输入数组 input 包含 个元素,每个像素的 RGB 值连续存储 。输出数组 output 应包含 个灰度值。
实现要求
- 不允许使用外部库。
solve函数签名必须保持不变。- 最终结果必须存储在数组
output中。 - 使用精确的系数:红色 0.299、绿色 0.587、蓝色 0.114。
示例
示例 1
Input: input = [255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0, 128.0, 128.0, 128.0]
width = 2, height = 2
Output: [76.245, 149.685, 29.07, 128.0]示例 2
Input: input = [100.0, 150.0, 200.0], width = 1, height = 1
Output: [140.75]约束条件
- ,。
- 。
- 所有 RGB 值在 范围内。
- 性能测试在 的规模下进行。
解题思路
RGB 转灰度是典型的逐像素映射操作。每个线程处理一个像素(读取 3 个 float,计算加权和,写入 1 个 float)。算术强度低,属于内存带宽受限内核。可以使用 float3 向量化读取三个 RGB 分量,提高内存带宽利用率。欢迎在 GitHub Discussions 分享你的解法。