我剛開始使用SS2圖像處理優化,但對於3通道24位彩色圖像不知道。 我的pix數據由BGR BGR BGR ...,unsigned char 8-bi排列,所以如果我想用SSE2/SSE3/SSE4的C/C++指令來實現Color2Gray,我該怎麼辦?是否需要爲我的pix數據對齊(4/8/16)? 我已閱讀文章:http://supercomputingblog.com/windows/image-processing-with-sse/ 但是它是ARGB 4通道32位色彩,每次處理4色圖像數據。 謝謝!如何使用SSE2/SSE3/SSE4處理24位3通道彩色圖像?
//Assume the original pixel:
unsigned char* pDataColor=(unsigned char*)malloc(src.width*src.height*3);//3
//init pDataColor every pix val
// The dst pixel:
unsigned char* pDataGray=(unsigned char*)malloc(src.width*src.height*1);//1
// RGB->灰色:Y = 0.212671 * R + 0.715160 * G + 0.072169 * B
是的,謝謝你。我已經完成了顏色RGB ... RGB到RR ... BB ... GG,但是當我嘗試使:RGB-> Gray:Y = 0.212671 * R + 0.715160 * G + 0.072169 * B。有問題。由於SSE使用128位,因此沒有SSE C/C++指令可以工作,如:_mm_mul_xxx(a0,b0); r0 = a0 * b0,r1 = a1 * b0,...,r15 = a15 * b0; (a0是16個uchar類型,b0是2個雙重類型)。 ???? – user2163635 2013-03-17 04:11:47
對於顏色轉換,通常使用定點算術代替浮點。將8位值解包爲16位值(使用_mm_unpacklo_epi8/_mm_unpackhi_epi8),然後使用16位值的整數乘法。 – 2013-03-18 00:03:39