我有一個UInt16[1000,1000]
陣列的10位強度值,我想從位0-9上移6位到位6-15。什麼是快速的方法來做到這一點?簡單地循環周圍所有做i = i << 6
的元素太慢了。如何快速將10位強度轉換爲16位像素的頂部?
1
A
回答
2
如果您使用指針直接訪問,則使用32位或64位整數並對其進行移位。應該給出相同的結果,但我預計它會快得多(因素2左右)。另一個加速應該來自避免訪問二維數組的複雜索引邏輯。
像這樣:
fixed(UInt16* p0=&arr)
{
UInt32* p=(UInt32*)p0;
UInt32* p_end=p+1000*1000/(sizeof(UInt32)/sizeof(UInt16));
while(p!=p_end)
{
*p = *p << 6;
}
}
我假定在一個32位處理32位整數會更快,而在64位進程64個整數會更快。
您可能想要做一些手動循環展開,即將多個賦值放入循環的一次迭代中。
您還可能需要特別注意數組的末尾。如果數組的大小不是您選擇的整數大小的倍數。
0
相關問題
- 1. 如何將24位圖像轉換爲16位rgb565位圖?
- 2. 如何將16位深度的圖像轉換爲8位深度
- 3. 16位圖像轉換爲32位
- 4. C# - 轉換8位或16位灰度原始像素數據
- 5. 將16位深度CvMat *轉換爲8位深度
- 6. 將24位bmp轉換爲16位?
- 7. 將16位轉換爲32位浮點
- 8. DICOM將16位轉換爲8位
- 9. Python將32位轉換爲16位tiff
- 10. 如何將16位灰度圖像轉換爲java中的RGB圖像?
- 11. 將圖像轉換爲16位顏色深度
- 12. 如何將VHDL中的8位轉換爲16位?
- 13. 如何在OpenCV中將16位圖像轉換爲32位圖像?
- 14. 如何在Java中將16位.tiff圖像轉換爲8位.tiff圖像?
- 15. 如何將16位,TIFF,灰度圖像轉換爲32位,TIFF,在Java中的灰度圖像?
- 16. MATLAB/Opencv:將24位RGB圖像轉換爲16位灰色
- 17. 將RGB圖像轉換爲RGB 16位和8位
- 18. 如何將字符串長度轉換爲像素單位?
- 19. 如何在C#中將16位'short'轉換爲32位整數?
- 20. 如何將藍牙16位服務UUID轉換爲128位UUID?
- 21. 如何將16位RGB565轉換爲24位RGB888?
- 22. iOS - 如何將png圖像轉換爲4位位圖灰度?
- 23. 8位到16位轉換
- 24. 如何將單位轉換爲每秒幀數作爲速度?
- 25. 將css顏色轉換爲16位rgb
- 26. OMRON將16位數字轉換爲ASCII
- 27. 將16位整數轉換爲0..100
- 28. 將像素位置轉換爲經度和緯度
- 29. 將緯度/經度轉換爲像素位置
- 30. 使用numpy高效地將16位圖像數據轉換爲8位顯示,並進行強度縮放
謝謝。我希望有一些本地代碼庫的功能,將提供超過2倍。 – ChrisJJ
@ChrisJJ它得到了多快?因素2只是一個保守的估計。 – CodesInChaos