簡體   English   中英

如何使用諾基亞影像SDK中的顏色查找表對圖像濾鏡進行編程

[英]How to program an image filter using Color lookup table in Nokia Imaging SDK

我有幾個看起來像這樣的顏色查找表。 我是否可以使用諾基亞成像SDK中的顏色查找表來對圖像過濾器進行編程的指南。 我之所以改用諾基亞影像SDK,是因為有人告訴我它更加優化和准確。

當前代碼看起來像這樣。

public WriteableBitmap Process()
    {
        int width = inputimage.PixelWidth;
        int height = inputimage.PixelHeight;

        int[] pixelArray = this.inputimage.Pixels;

        for (int i = 0; i < width; i++)
        {           

            for (int j = 0; j < height; j++)
            {
                // Extract color components
                var c = inputimage.GetPixel(i,j);
                var b = c.B;
                var g = c.G;
                var r = c.R;
                var a = c.A;

                int blockBlue = b / 4;
                int blockGreen = g / 4;
                int blockRed = r / 4;

                int right = blockBlue % 8;
                int down = blockBlue / 8;

                int px = right * 64 + blockRed;
                int py = down * 64 + blockGreen;


                Color clr = LookUpTable.GetPixel(px, py);

                // Set result color
                inputimage.SetPixel(i, j, clr);                    
            }
        }

        return wBmp;
    }

CustomFilterBase或CustomEffectBase基類將使您幾乎直接轉換此循環。

我不確定單獨使用此RGB LUT是否會獲得更好的性能或准確性,因為它已經非常簡單了。 我看到的主要內容是GetPixel / SetPixel,您實際上應該將其更改為直接數組訪問。 還要避免使用Color類。 理想情況下,讀取和寫入32位uint值,掩蓋和移出部件。

第二個改進是可以限制存儲在LUT中的功能。

如果可以將其表示為單獨的紅色,綠色和藍色LUT,則可以使用Imaging SDK中的CurvesFilter類。 即使沒有SDK,也可以加快速度,因為這些表可以更靠近L1或L2緩存中的CPU。

編輯:諾基亞影像SDK 1.2的最終版本(即將發布)具有一些可能也與之相關的精度改進,順便說一句。

編輯2:您應該可以使用以下內容訪問Pixel。 (尚未完全測試演員表。C#對簽名有挑剔。)

// in for loop..

var uintColor = (uint)wb.Pixels[i];
var a = (byte)((uintColor >> 24) & 255);
var r = (byte)((uintColor >> 16) & 255);
var g = (byte)((uintColor >> 8) & 255);
var b = (byte)((uintColor) & 255);

// ..do something..

wb.Pixels[i] = (int)(b | (g << 8) | (r << 16) | (a << 24));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM