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

DelphiX 實戰:TDIB.Draw3x3Matrix 卷積濾鏡完整範例

     編輯:Delphi

TDIB.Draw3x3Matrix 使用 3x3 卷積核進行影像處理,內建多種預設矩陣(浮雕、模糊、銳化、邊緣偵測等)並支援自訂矩陣。本文提供完整範例展示所有預設效果與自訂矩陣用法。

效果預覽

Draw3x3Matrix 效果示意圖

核心程式碼

unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DIB, StdCtrls;
type
  TForm1 = class(TForm)
    DXPaintBox1: TDXPaintBox;
    Button1: TButton; // 浮雕
    Button2: TButton; // 強浮雕
    Button3: TButton; // 模糊
    Button4: TButton; // 銳化
    Button5: TButton; // 邊緣偵測
    Button6: TButton; // 自訂矩陣
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  end;
var Form1: TForm1;
implementation {$R *.dfm}
var dib: TDIB;

procedure TForm1.FormCreate(Sender: TObject);
const ImgPath1 = 'C:\Temp\DX.jpg';
begin
  dib := TDIB.Create;
  dib.LoadFromFile(ImgPath1);
  DXPaintBox1.Width := dib.Width;
  DXPaintBox1.Height := dib.Height;
  DXPaintBox1.DIB.Assign(dib);
  DXPaintBox1.Repaint;
end;

procedure TForm1.FormDestroy(Sender: TObject); begin dib.Free; end;

procedure TForm1.Button1Click(Sender: TObject);
begin DXPaintBox1.DIB.Draw3x3Matrix(dib, msEmboss); DXPaintBox1.Repaint; end;

procedure TForm1.Button2Click(Sender: TObject);
begin DXPaintBox1.DIB.Draw3x3Matrix(dib, msHardEmboss); DXPaintBox1.Repaint; end;

procedure TForm1.Button3Click(Sender: TObject);
begin DXPaintBox1.DIB.Draw3x3Matrix(dib, msBlur); DXPaintBox1.Repaint; end;

procedure TForm1.Button4Click(Sender: TObject);
begin DXPaintBox1.DIB.Draw3x3Matrix(dib, msSharpen); DXPaintBox1.Repaint; end;

procedure TForm1.Button5Click(Sender: TObject);
begin DXPaintBox1.DIB.Draw3x3Matrix(dib, msEdgeDetect); DXPaintBox1.Repaint; end;

procedure TForm1.Button6Click(Sender: TObject); // 自訂矩陣
const ms: TMatrixSetting = (-9, 1, -2, -10, -7, 4, -4, -3, 1, -5);
begin
  DXPaintBox1.DIB.Draw3x3Matrix(dib, ms);
  DXPaintBox1.Repaint;
end;
end.

預設矩陣常數對照

常數效果典型應用
msEmboss浮雕立體質感、按鈕外觀
msHardEmboss強浮雕更強烈的 3D 效果
msBlur模糊柔化、去噪
msSharpen銳化增強細節、邊緣
msEdgeDetect邊緣偵測輪廓提取、線稿化

自訂矩陣結構

TMatrixSetting 為包含 10 個整數的陣列(9 個核心權重 + 1 個除數/偏移)。範例中的 (-9,1,-2,-10,-7,4,-4,-3,1,-5) 定義了特殊的邊緣增強效果。開發者可依需求設計矩陣,如:

  • 銳化:(0,-1,0, -1,5,-1, 0,-1,0, 1)
  • 浮雕:(-2,-1,0, -1,1,1, 0,1,2, 1)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved