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

C# 超酷圖像特效(二):浮雕效果實作

     編輯:關於C語言

前言

本系列第二篇,實作「浮雕效果」:相鄰像素差值加 128 偏移,產生立體凹凸視覺錯覺。

效果原理

  1. 對每像素 (x,y),取右下鄰居 (x+1,y+1)。
  2. 計算差值:Δ = |Current - Neighbor + 128|。
  3. RGB 各通道獨立計算,限制在 [0,255]。
  4. 平坦區域差值 ≈ 0 → 灰色 (128);邊緣差值大 → 亮/暗邊緣,形成浮雕感。

完整程式碼


private void btnEmboss_Click(object sender, EventArgs e)
{
    try
    {
        int w = pictureBox1.Image.Width, h = pictureBox1.Image.Height;
        using (var newBmp = new Bitmap(w, h))
        using (var oldBmp = (Bitmap)pictureBox1.Image)
        {
            for (int x = 0; x < w - 1; x++)
                for (int y = 0; y < h - 1; y++)
                {
                    Color p1 = oldBmp.GetPixel(x, y);
                    Color p2 = oldBmp.GetPixel(x + 1, y + 1);
                    int r = Clamp(Math.Abs(p1.R - p2.R + 128));
                    int g = Clamp(Math.Abs(p1.G - p2.G + 128));
                    int b = Clamp(Math.Abs(p1.B - p2.B + 128));
                    newBmp.SetPixel(x, y, Color.FromArgb(r, g, b));
                }
            pictureBox1.Image = newBmp;
        }
    }
    catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); }
}

int Clamp(int v) => v < 0 ? 0 : (v > 255 ? 255 : v);

效果圖

浮雕效果

變體與擴充

  • 方向控制:改用右、下、左上等不同鄰居,改變光源方向。
  • 強度調整:偏移量 128 可參數化,差值乘以係數增強/減弱效果。
  • 結合邊緣檢測:Sobel、Prewitt 算子提取邊緣後再浮雕渲染。

結語

浮雕效果以簡單差值運算產生豐富立體感。理解相鄰像素關係、偏移中性灰、邊緣增強原理,可靈活設計各類非真實感渲染 (NPR) 風格。

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