关于图像对比度处理(100分)

  • 主题发起人 主题发起人 billi859
  • 开始时间 开始时间
B

billi859

Unregistered / Unconfirmed
GUEST, unregistred user!
我在这里看多很多关于图像处理的资料,但是始终没有找到一种很有用的图像对比度处理算法,
不知那位兄弟可以帮帮我,非常感谢.
 
你的资料能否共享一下?多谢!你所谓 的很有用的方法指身么?在fastbmp里面有的
很不错!可以参考以下
 
ImageEn控件有现成的代码,要不?

-----
http://www.8421.org
 
to huazai:
我所谓有用指真正能调对比度且不会失真太大,就内似PHOTOSHOP的对比度调节.


to qdyoung:
imageen控件我原来就下载了,但它的对比度调节存在严重失真,尤其是黑白图象.
 
其实就是得到一点的像素值
if x>127 then
x:=x+一个常数;//do not overflow 255;
if x<127 then
x:=x-一个常数;//do not blow 0
 
风云再起的方法估计无法满足billi859的要求,这种阀值做法只是一种很简化的做法,效果
一般
 
试试这个:
type
TRGBcolor=record
R,G,B:byte;
end;
pRGBcolor:=^Trgbcolor;
procedure Contrast(var Bmp: TBitmap; Amount: Integer);
// Amount: -255~255
var
X, Y: Integer;
I: Byte;
ColorTable: array[0..255] of TRGBColor;
pRGB: PRGBColor;
begin
for I := 0 to 126 do
begin
Y := (Abs(128 - I) * Amount) div 256;
ColorTable.r := GetRValue(Byte(I - Y));
ColorTable.g := GetGValue(Byte(I - Y));
ColorTable.b := GetBValue(Byte(I - Y));
end;
for I := 127 to 255 do
begin
Y := (Abs(128 - I) * Amount) div 256;
ColorTable.r := GetRValue(Byte(I + Y));
ColorTable.g := GetGValue(Byte(I + Y));
ColorTable.b := GetBValue(Byte(I + Y));
end;
for Y := 0 to Bmp.Height - 1 do
begin
pRGB := Bmp.ScanLine[Y];
for X := 0 to Bmp.Width - 1 do
begin
pRGB.R := ColorTable[pRGB.R].R;
pRGB.G := ColorTable[pRGB.G].G;
pRGB.B := ColorTable[pRGB.B].B;
Inc(pRGB);
end;
end;
end;
 
huazai,速度慢
 
也许这2页对你有帮助:http://www.delphibbs.com/delphibbs/dispq.asp?lid=1356396
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1341349
 
后退
顶部