如何编程实现对图象锐度(Sharpness)的调整?(80分)

  • 主题发起人 主题发起人 neural1208
  • 开始时间 开始时间
N

neural1208

Unregistered / Unconfirmed
GUEST, unregistred user!
Envision Image Library
里面有算法,你可以研究一下.
 
人民邮电出版社,可能是同志工作室,有本书关于delphi的多媒体和图形图像编程,里面
有个例子。不过它不是使用ScanLine实现的。
楼上的兄弟:where Envision Image Library ?
 
其实是3x3的模板操作:代码如下:
procedure TMainForm.normalsharpClick(Sender: TObject);
var
bmp1,bmp2:Tbitmap;
p1,p2,p3,p4:pbytearray;
i,j: integer;
begin
self.DoubleBuffered:=true;
bmp1:=Tbitmap.Create;
bmp2:=Tbitmap.Create;
bmp1.Assign(ChildForm.image1.Picture.Bitmap);
bmp1.PixelFormat:=pf24bit;
bmp1.Width:=ChildForm.image1.Picture.Graphic.Width;
bmp1.Height:=ChildForm.image1.Picture.Graphic.Height;
bmp2.Assign(ChildForm.image1.Picture.Bitmap);
bmp2.PixelFormat:=pf24bit;
for j:=1 to bmp1.Height-2 do
begin
p1:=bmp1.ScanLine[j];
p2:=bmp2.ScanLine[j-1];
p3:=bmp2.ScanLine[j];
p4:=bmp2.ScanLine[j+1];
for i:=1 to bmp1.Width-2 do
begin

p1[3*i+2]:=min(255,max(0,((-p2[3*(i-1)+2]-p2[3*i+2]-p2[3*(i+1)+2]-p3[3*(i-1)+2]+16*p3[3*i+2]-p3[3*(i+1)+2]-p4[3*(i-1)+2]-p4[3*i+2]-p4[3*(i+1)+2]) div 8 )));
p1[3*i+1]:= min(255,max(0,((-p2[3*(i-1)+1]-p2[3*i+1]-p2[3*(i+1)+1]-p3[3*(i-1)+1]+16*p3[3*i+1]-p3[3*(i+1)+1]-p4[3*(i-1)+1]-p4[3*i+1]-p4[3*(i+1)+1])div 8)));
p1[3*i]:= min(255,max(0,((-p2[3*(i-1)]-p2[3*i]-p2[3*(i+1)]-p3[3*(i-1)]+16*p3[3*i]-p3[3*(i+1)]-p4[3*(i-1)]-p4[3*i]-p4[3*(i+1)])div 8)));

end;

end;
ChildForm.Image1.Picture.Bitmap.Assign(Bmp1);
jp1:=Tjpegimage.Create;
jp1.Assign(bmp1);
bmpnumber:=bmpnumber+1;
jp1.SaveToFile('c:/temp/'+inttostr(bmpnumber)+'.jpg');
Bmp1.Free;
jp1.Free;
bmp2.Free;

end;
 
to huazai:
多谢你的回答,不过代码中哪里可以设置锐度值呢?
 
可以控制次数!速度很快的!
 
后退
顶部