10大优享服务
62项会员特权
100
雇佣
其他软件开发
收藏
用C++语言写程序
项目地区:哈尔滨市
任务结束
需求描述:
您需要应用讲座/研讨会中讨论的技术,使用Intel的线程构建块(TBB)库实现大量的图像处理操作。具体工作内容如下:


a)使用地图模式,实现TBB内核转换图像,其中每个像素存储红色、绿色和蓝色组件(RGB颜色空间)到一个图像,其中每个像素存储色度(x, y)和亮度(y)。



注意:您可以使用FreeImage来加载不同的图像格式来测试,这是我们在课堂上看到的。加载的图像存储在一个二维数组中,其中每个像素由RGB值(存储为3个浮点数)组成。转换到xyY颜色空间需要两个步骤:




•将RGB值转换为中间XYZ值:




X = 0.4124 * R + 0.3576 * G + 0.1805 * B


Y = 0.2126 * R + 0.7152 * G + 0.0722 * B


Z = 0.0193 * R + 0.1192 * G + 0.9505 * B



•计算色度和亮度xyY值如下:



x = x / (x + Y + Z)


y = y / (X + y + Z)


Y = Y




这个阶段的输出将是一个新的图像,其中每个像素存储在xyY颜色空间,而不是RGB颜色空间。



b)编写第二个内核,从步骤1中获取输出图像,并将每个像素的亮度设置为其原始值的30%。



c)编写第三个内核,将在步骤2中修改的xyY图像转换回RGB颜色空间,并将生成的图像保存到磁盘。这是在2个步骤…




•将xyY值转换回中间的XYZ值:



X = X * (Y / Y)


Y = Y


Z = (1- x- y) * (y / y)






•将中间的XYZ值转换为RGB值:

R = 3.2405 * X + -1.5371 * Y + -0.4985 * Z


G = -0.9693 * X + 1.8760 * Y + 0.0416 * Z


B = 0.0556 * X + -0.2040 * Y + 1.0572 * Z



d)实现步骤1、2和3,但要在一个for循环中连续运行。



e)制定计划,列出一系列测试每个内核的实验(rgbto - xyy转换、亮度变化和xyto - rgb转换),针对每个测试用例查看不同大小的图像。将每个实验运行多次——因为你不能保证在一个先发制人的多任务环境中运行一个测试是公平的——并将你的测试计划和结果记录在一个字处理报告中。作为报告的一部分,讨论诸如TBB之类的并发/并行编程库如何处理诸如此类的数据并行问题。
登录查看详细需求描述

任务结束

一品威客网已聚集超千万专业人才,为雇主提供一站式优质服务