饱和度:如图,amount为变量,用于进度条调节。I=255循环结束。
亮度:每点的RGB值都分别加上同一个变量。
RGB调节:如调节R,把R值加上当前指定的变量(滑动条的值)。G
和B的方法同R。
◆滤镜:曝光和浮雕(没有做滑动条调节变量的功能)
曝光:扫描图像,当一个点的R值小于128的时候,就对其取非。G和
B也同R一样方法。
浮雕:分为浮雕和雕刻,扫描的时候分别扫描两行或两列,扫描后取相
邻点的R差值,差值=R[i]-R[i+1],然后再进行赋值,R=差值+128。G和B同R一样方法。最后,再对RGB取平均值(R+G+B)/3,将该平均值赋给RGB,这样浮雕就不会有一些杂色。
浮雕和雕刻的区别:差值的等式不一样,雕刻的差值=R[i+1]-R[i]。
◆滤镜:锐化、模糊、杂色、喷溅、马赛克、霓虹
锐化:
模糊:如图3-10,图中每个圈内数字为3的是当前的点,这个图上的其
它点都和当前点在同一扫描行上,2为3的相邻点,1为2的另一个相邻点。
如:针对当前点的R值
R[I]=(3*R[I]+2*R[I-1]+2*R[I+1]+1*R[I-2]+1*R[I+2])/9,这就是当前点的未来取值与其相邻点和当前点之间的关系。R[I]等式注解:R[I]表示当前点,对应图中的3,R[I-1]和R[I+1]分别对应图中的2,R[I-2]和R[I+2]分别对应图中的1。
杂色: 设定一个随机数,随机数范围由变量(滑动条的值)决定,把每
个点的RGB值都分别加上该随机数。
喷溅:针对每个像素点取随机数运算(当前点坐标(i,j)
然后在位图范围内,把新取的坐标点(x,y)的像素信息赋给原点(i,j)。
马赛克:从图像的第一个点开始扫描,把它的字节赋给后面一定范围内的所有点。该范围可以通过变量设定,使用多个repeat……until语句,分别对行上的点进行赋值,直到达到变量范围的时候停止循环,继续范围外的下一个点。
霓虹:利用边缘检测算法,采用prewitte边缘算子
根据上面的矩阵再求当前像素点处理后的三个字节值,分别为:
max(r,R),max(g,G),max(b,B)
3.2.3 效果参数程序模块
该模块主要调用图像处理模块的图像处理过程,并安排每次打开form2窗体的时候要显示的处理效果。凡是有用到滑动条trackbar调整变量值的效果都要经过该模块调用图像处理模块的过程来实现。
例如:运行程序.exe,点击调节-对比度调节,这时候跳出一个窗体,该窗体就是源文件中的form2窗体,这时拉动该窗体上的滑动条,程序就会调用图像处理模块中的过程procedure ContrastChange(SrcBmp:Tbitmap;Amount:integer);对当前的Tbitmap进行效果处理,滑动条的value值就是Amount变量的值。点击窗体上的确定按钮,就会把当前滑动条的值赋给Amount,然后对主窗体上的图像进行效果处理。
另外,考虑到如果原图太大的话在form2窗体中利用滑动条看预览效果的时候会出现反应速度慢,占用内存太大的问题,所以又引入一个过程procedure TForm2.LoadImage(InputBmp:Tbitmap);用来在创建一个新图像,该图像高、宽的比例和原图一样,但是大小限制在一个固定的范围内。
3.2.4 帮助模块
关于:控制窗体form3,显示制作者信息。
帮助:调用外部文件,显示帮助信息。
由于不善于编写chm格式的帮助文件,所以这里采用的是flash的帮助文件。
优点:可以只有设计界面,还可以实现动画的互动效果。
要在delphi中显示flash文件,首先,必须确定电脑上安装有flash插件,然后,在delphi的Component菜单项选Import ActiveX Control选项,接下来在Import ActiveX Control项就会有Shockwave Flash (版本号)这项出现,选中它再按Install按钮安装。这时,查看ActiveX一栏下,可以看到新安装的控件shockwaveflash,拖放该控件到窗体上,可以通过改变其movie属性,改变访问电脑上flash文件的路径。
把flash上的按钮和delphi的事件联系起来:
先在flash所在的窗体的Tshockwaveflash控件设置下列event事件:
procedure TForm4.ShockwaveFlash1FSCommand(ASender: TObject; const command,args: WideString);
begin
if command='quit' then
begin
form4.Close;
end;
end;
然后设置flash源文件里所需的按钮的fscommand命令:点击该按钮,在动作里写上以下代码
on(press,release) //鼠标事件
{
fscommand(“quit”);
}
这样,在delphi的可运行文件上运行swf文件的时候,只要点击flash上的带有fscommand指令的按钮,就可以根据该指令指向的命令,对delphi的可运行文件作出反应。
根据这个原理也可以利用flash制作delphi编译程序的界面。
第四章 系统的界面与测试
§4.1系统界面
拖动滑动条的同时,右边的图像会跟着对应的滚动条参数变化。左边的为原图,方便对照用的。(需要用到滑动条的其他效果还有:亮度、饱和度、RGB调节、锐化、模糊、杂色、喷溅、马赛克、霓虹)
§4.2环境测试
测试计算机配置:x86 Family 6 Model 83
AT/AT COMPATIBLE
195,056 KB RAM
测试系统: Microsoft Windows 2000
5.00.2195
Service Pack 4
观察windows任务管理器:
在运行photo.exe之前cpu使用7%,刚打开文件的瞬间,cpu使用50%,然后有迅速降到7%,继续