首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 圖像處理特效大全:12 種經典濾鏡算法原理與完整實現

     編輯:關於C#

基礎類與核心方法

核心類:Bitmap(像素操作)、Graphics(繪圖)、Color(顏色結構)、Rectangle(區域)。關鍵方法:GetPixel/SetPixel、DrawImage。

12 種經典特效實現

1. 底片效果(顏色反轉)


for (int x = 0; x < w; x++)
    for (int y = 0; y < h; y++)
    {
        Color p = src.GetPixel(x, y);
        dst.SetPixel(x, y, Color.FromArgb(255 - p.R, 255 - p.G, 255 - p.B));
    }

2. 浮雕效果(鄰域差分 + 偏移)


Color p1 = src.GetPixel(x, y), p2 = src.GetPixel(x+1, y+1);
int r = Math.Abs(p1.R - p2.R + 128).Clamp(0, 255);
// 同理 G,B
dst.SetPixel(x, y, Color.FromArgb(r, g, b));

3. 黑白效果(三種算法)

  • 平均值法:(R+G+B)/3
  • 最大值法:Max(R,G,B)
  • 加權平均法(推薦):0.7*R + 0.2*G + 0.1*B

4. 柔化效果(高斯模糊 3x3 核)


int[] Gauss = {1,2,1, 2,4,2, 1,2,1}; // 權重和 16
for (int dx=-1; dx<=1; dx++)
    for (int dy=-1; dy<=1; dy++)
    {
        Color p = src.GetPixel(x+dx, y+dy);
        r += p.R * Gauss[idx]; // 同理 G,B
        idx++;
    }
r /= 16; dst.SetPixel(x, y, Color.FromArgb(r.Clamp(), g.Clamp(), b.Clamp()));

5. 銳化效果(拉普拉斯算子)


int[] Laplacian = {-1,-1,-1, -1,9,-1, -1,-1,-1};
// 同高斯卷積,無需除法,直接 Clamp

6. 霧化效果(隨機鄰域采樣)


Random rnd = new Random();
int dx = x + rnd.Next(19), dy = y + rnd.Next(19);
dst.SetPixel(x, y, src.GetPixel(dx.Clamp(w), dy.Clamp(h)));

7. 光照效果(徑向漸亮)


Point center = new Point(w/2, h/2);
int radius = Math.Min(w, h) / 2;
for (int x=0; x

8. 百葉窗效果(條狀交錯顯示 + 動畫)

垂直/水平分割圖像為等寬條帶,按序繪製並 Thread.Sleep 產生動畫。

9. 馬賽克效果(隨機塊狀重組)

將圖像分為 N×M 塊,隨機順序繪製塊,最後恢復原圖。

10. 油畫效果(鄰域隨機取色)


int model = 2; // 鄰域半徑
Color c = src.GetPixel(x + rnd.Next(model), y + rnd.Next(model));
dst.SetPixel(x, y, c);

11. 扭曲效果(非矩形投影)


Point[] pts = {
    new Point(offset, offset),
    new Point(w, offset),
    new Point(0, h - offset)
};
g.DrawImage(src, pts); // 平行四邊形映射

12. 積木效果(二值化像素化)


int avg = (p.R + p.G + p.B) / 3;
int val = avg >= 128 ? 255 : 0;
dst.SetPixel(x, y, Color.FromArgb(val, val, val));

性能優化建議

  • 使用 LockBits 直接操作內存,避免 GetPixel/SetPixel 巨大開銷
  • 並行處理:Parallel.For 分行處理
  • 預計算查找表(如 Clamp、灰度權重)

總結

這 12 種特效涵蓋了圖像處理的核心類別:點運算、鄰域卷積、幾何變換、隨機采樣。理解其數學原理,可輕松擴展更多濾鏡。實際項目中建議使用 GPU 加速庫(如 OpenCV、SkiaSharp)獲得實時性能。

原始圖片 底片效果 浮雕效果 黑白效果 柔化效果 銳化效果 霧化效果 光照效果 垂直百葉窗 水平百葉窗 馬賽克效果 油畫效果 扭曲效果 積木效果

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved