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

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)