请问有没有处理"图像模糊"速度比较快的算法或者组件(处理时间小于1秒的:),谢谢:)(100分)

  • 主题发起人 主题发起人 wison
  • 开始时间 开始时间
Fastbmp。控件!找找
 
I have it.
forevertyn@sina.com
 
给你一个高斯模糊算法
type
TScanedData=array[0..255,0..255] of Word;
PRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray = array[0..MaxPixelCount] of TRGBTriple;

TFColor = record b,g,r:Byte end;
PFColor =^TFColor;
TLine = array[0..0]of TFColor;
PLine =^TLine;
TPLines = array[0..0]of PLine;
PPLines =^TPLines;

procedure TFastImgProc.SplitBlur(Amount:Integer);//模糊;Amount:0..100
var Lin1,Lin2: PLine; pc: PFColor; cx,x,y: Integer;
Buf: array[0..3]of TFColor;
begin
pc:=Bits;
for y:=0 to Height-1 do begin
Lin1:=Pixels[NormInt(y+Amount,0,Height-1)];
Lin2:=Pixels[NormInt(y-Amount,0,Height-1)];
for x:=0 to Width-1 do begin
cx:=NormInt(x+Amount,0,Width-1); Buf[0]:=Lin1[cx];
Buf[1]:=Lin2[cx]; cx:=NormInt(x-Amount,0,Width-1);
Buf[2]:=Lin1[cx]; Buf[3]:=Lin2[cx];
pc.b:=(Buf[0].b+Buf[1].b+Buf[2].b+Buf[3].b)shr 2;
pc.g:=(Buf[0].g+Buf[1].g+Buf[2].g+Buf[3].g)shr 2;
pc.r:=(Buf[0].r+Buf[1].r+Buf[2].r+Buf[3].r)shr 2;
Inc(pc);
end;
pc:=Ptr(Integer(pc)+Gap);
end;
end;

procedure TFastImgProc.GaussianBlur(Amount:Integer);//高斯模糊;Amount:0..100
var i: Integer;
begin
for i:=Amount downto 1 do SplitBlur(i);
end;

 
你如果针对MMX优化,效果会更好!
网上有这样的控件下载!
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部