PS色調均化濾鏡的快捷實現(C#原始碼)。

來源:互聯網
上載者:User

  photoshop色調均化功能通常是在進行修片處理前期比較常用的功能之一,其對擴充映像的對比,增強視覺效果有一定的作用。在很多課本或者文章中,也稱這種處理為灰階均衡化、長條圖均衡化等等。演算法原理都是對原始映像統計其長條圖,然後通過累計分布函數,重新隱射長條圖資料,使每個色階的的分布機率都往一致的方向調整。我看到的網路上的代碼,抑或是一些教材中的代碼,對這個過程的描述都是相當的冗餘,要麼是代碼累贅,效率低下,要麼是蘿莉囉唆,很是難受。

   在給出My Code之前,還需要說明一些問題。對於灰階映像,由於只有一個通道,這個問題不明顯,對於常見的24位元影像像,由於有RGB三個通道,那就存在是每個通道都單獨均衡還是三通道聯合計算長條圖,然後利用相同的映射表在隱射RGB資料了,經過我的測試,在Photoshop中,是取的後者。

    for (Y = 0; Y < Height; Y++)    {        Pointer = Scan0 + Y * Stride;               // 定位到每個掃描行的第一個像素,以避免溶於資料的影響        for (X = 0; X < Width; X++)        {            HistGram[*Pointer]++;                   // Blue            HistGram[*(Pointer + 1)]++;             // Green            HistGram[*(Pointer + 2)]++;             // Red                Pointer += 3;                           // 移向下一個像素        }    }    Num = 0;    for (Y = 0; Y < 256; Y++)    {        Num = Num + HistGram[Y];        Lut[Y] = (byte)((float)Num / (Width * Height * 3) * 255);       // 計算映射表    }    for (Y = 0; Y < Height; Y++)    {        Pointer = Scan0 + Y * Stride;        for (X = 0; X < Width * 3; X += 3)          //  也可以這樣寫        {            Pointer[X] = Lut[Pointer[X]];            Pointer[X + 1] = Lut[Pointer[X + 1]];            Pointer[X + 2] = Lut[Pointer[X + 2]];        }    }

  演算法部分就是這麼簡單的二十幾行代碼,代碼清晰,執行效率又特別高,數位相機中常見的4000*3000的照片100ms內就可以處理完。

    一副映像如果執行了一次色調均化,那麼再次執行色調均化應該不會有任何像素髮生變換了。

    從廣義上講,色調均化可以看成是長條圖匹配的一個特例,即匹配的長條圖分布為一條水平線。

    一些書中的色調均化是對各通道分別進行校正的,似乎這樣處理的效果容易導致映像整體顏色不搭配,比如經典的Lena圖:

     
   
   

                      原圖                               PS的色調均化                               郎銳課本上的效果

   C#版色調均化代碼:http://files.cnblogs.com/Imageshop/HistGramEqualize.rar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.