[图片]#include <TCHAR.h>
[图片]
[图片]#include <cstdio>
[图片]#include <rapidmind/platform.hpp>
[图片]#include <cximage/ximage.h>
[图片]#pragma comment(lib,"rmplatform-vc7-md.lib")
[图片]#pragma comment(lib,"cximagecrt.lib")
[图片]
[图片]using namespace rapidmind;
[图片]
[图片]int main()
[图片][图片][图片]{
[图片] float Time;
[图片] CxImage Image("C:\\HDTV.tif",CXIMAGE_FORMAT_TIF);
[图片] long size = Image.GetWidth()*Image.GetHeight()*sizeof(BYTE)*4;
[图片] BYTE* DataPtr = NULL;
[图片] if( !Image.Encode2RGBA(DataPtr,size) )
[图片] printf("Shit!\n");
[图片]
[图片] rapidmind::init();
[图片]
[图片][图片]/**//*
[图片]const mat3 RGBtoCIEmat = mat3(0.412453, 0.212671, 0.019334,
[图片] 0.357580, 0.715160, 0.119193,
[图片] 0.180423, 0.072169, 0.950227);
[图片]
[图片]*/
[图片] Value3f C0(0.412453f,0.357580f,0.180423f);
[图片] Value3f C1(0.212671f,0.715160f,0.072169f);
[图片] Value3f C2(0.019334f,0.119193f,0.950227f);
[图片]
[图片][图片] Program Prog = RM_BEGIN_PROGRAM("stream")
[图片]{
[图片] In<Value4ub> rgb;
[图片] Out<Value4ub> cie;
[图片] cie(0) = dot(rgb(0,1,2),C0);
[图片] cie(1) = dot(rgb(0,1,2),C1);
[图片] cie(2) = dot(rgb(0,1,2),C2);
[图片] cie(3) = 255;
[图片] }RM_END
[图片] Array<1,Value4ub> Input(Image.GetWidth()*Image.GetHeight());
[图片] DataPtr = Input.write_data();
[图片] Array<1,Value4ub> Output;
[图片]
[图片] rapidmind::compile(Output,Prog(Input));
[图片] Output = Prog(Input);
[图片]
[图片] DataPtr[0] = 255;
[图片] rapidmind::Timer Start = rapidmind::Timer::now();
[图片] Output = Prog(Input);
[图片] rapidmind::finish();
[图片]
[图片] //const BYTE* RMResultPtr = Output.read_data();
[图片]
[图片] rapidmind::Timer End = rapidmind::Timer::now();
[图片] rapidmind::finish();
[图片] Time = End.milliseconds() - Start.milliseconds();
[图片] printf("Use RM : %f milliseconds\n",Time);
[图片]
[图片] int Width = Image.GetWidth(),Height = Image.GetHeight();
[图片]
[图片] Start = rapidmind::Timer::now();
[图片][图片] for(int i=0;i<Width*Height;i++)
[图片]{
[图片] float r = DataPtr[i*4+0],g=DataPtr[i*4+1],b=DataPtr[i*4+2];
[图片] float x = r*0.412453f + g*0.357580f + b*0.180423f;
[图片] float y = r*0.212671f + g*0.715160f + b*0.072169f;
[图片] float z = r*0.019334f + g*0.119193f + b*0.950227f;
[图片] DataPtr[i*4+0] = x;
[图片] DataPtr[i*4+1] = y;
[图片] DataPtr[i*4+2] = z;
[图片] DataPtr[i*4+2] = 255;
[图片] }
[图片] End = rapidmind::Timer::now();
[图片] Time = End.milliseconds() - Start.milliseconds();
[图片] printf("Use CPU: %f milliseconds\n",Time);
[图片]
[图片]
[图片] system("PAUSE");
[图片] return 0;
[图片]}