BarData[I]:=0
else if I>=sbMax.Position then
BarData[I]:=255
else
BarData[I]:=Round(255/(sbMax.Position-sbMin.Position)*(I-sbMin.Position));
end;
DrawBar;
pbBarPaint(pbBar);
Button1Click(Button1);
四、变为黑白图片
在使用第三个功能的时候,你会发现当b<=a时,图像上的颜色除了黑色就是白色。这样操作的好处是不能直接显示出来的。这只要到了比较高级的图像处理如边缘检测等,才有作用。本例可以拿第三种方法的公式再变形,因此不作详细阐述。
五、指数级亮度调整
我们假设这个图的定义域是[0,1],值域也是[0,1]。那么,定义函数f(x)=x^c,则f(x)的图像有一段如上图。我们再用鼠标操作时,可以在上面取一点P(a,b),然后使f(x)通过点P,则c=ln(b)/ln(a)。有了c之后,我们就可以对颜色进行操作了:
New=(Old/255)^c*255=exp(ln(old/255)*c)*255
var ea,eb,ec:Extended;
I:Integer;
begin
ea:=A/255;
eb:=B/255;
ec:=Ln(eb)/Ln(ea);
for I:=1 to 255 do
BarData[I]:=Round(Exp(Ln((I/255))*ec)*255);
这样做可以调节图像的亮度。
先到这里,在下一篇文章中,我会向大家整理出彩色图像亮度调整的方法。
示例程序:http://vczh.cstc.net.cn/vczh/Article/A_Files/Gray256.rar 打开后按右键弹菜单
上一页 [1] [2] [3]
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18