设为主页
收藏本站
当前位置: >
首页
->
编程语言
->
ViualBasic
->
VB图像处理之二次线性插值的应用
相关分类:
ASP
ViualBasic
UML / Rational Rose
PHP4/PHP5
Perl
JAVA/JSP教程
Delphi
ColdFusion
CGI
C/C++
ASP.NET
XML
站内搜索:
智能模糊搜索
仅搜索标题
VB编程之路-如何让界面美化
(06-05)
用VB实现实时曲线的绘制和保存
(06-05)
VB调用C程序动态链接库的方法
(06-05)
浅议VB6字节数组和字符串的相互转换
(06-05)
VB入门教程之三
(06-05)
VB图像处理之像素的获取和输出
(06-05)
VB实现图像在数据库的存储与显示
(06-05)
VB图像处理之二次线性插值的应用
(06-05)
VB图像处理之几个常用滤镜的实现
(06-05)
VB图像处理之铅笔画算法和木雕算法
(06-05)
VB图像处理之二次线性插值的应用
作者:
Webmaster
来源:
Linuxdby.com
点击:
日期:
2007-06-05 [
收藏
] [
投稿
]
IE是否经常中毒?推荐您
这里我们假设A=100,B=255放大倍率为3,水平方向插值;先计算出原始像素的差:(B-A)=255-100=155
再计算出水平方向每一步的递增量:(A-B)/3=155/3=51.7
这里我们用一个变量DRt来记录这个递增量(这里只用红色来做例子)
->ab1=A DRt=100 51.7=151
ab2=ab1 DRt=151 51.7=202->
好了,其实二次线性算法就是这么一个东西,并不复杂。或许有写朋友会对于我给出的代码产生疑问。很简单的一个算法为什么要写这么多代码。
其实答案很简单:为了提高速度。
在VB中“ ”和“-”永远是最快的,“*”要比“/”和“\”快。不论是什么类型的变量都是这样的。
下面再来分析一下我的程序。
在我的程序中把两个方向的插值分解成了两个单独的部分。
先把
->AB
CD->
变成:
->Aab1...abNB
Ccd1...cdND->
再变成:
->Aab1...abNB
ac1.............db1
..................
acN..............bdN
Ccd1...cdND->
这两个方向的插值算法完全相同
而Xratio和Yratio这两个变量则用来记录水平方向和垂直方向的放大倍率。所以这个过程也能够让图像缩放不按照原始的纵横比进行。
好了,将这个模块和全局变量添加到上次建立的工程模块中。
把按钮中的代码改成:
->subcommand1_click()
Withpicture1
.ScaleMode=3
.BorderStyle=0
DibGet.hdc,0,0,.scalewidth,.scaleheight
ZoomImage,.scalewidth*2,.scaleheight*2
EndWith
picture2.AutoRedraw=True
DibPutpicture2.hdc
picture2.refresh
endsub->
图像是否已经放大到原来的两倍了呢?速度不算很慢吧?
什么?很慢?先编译成EXE再运行吧。下面是效果图:
原图:
->->
二次线性插值放大5倍:
->
->
关于二次线性插值就说到这里了->
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>> 论坛入口 <<
上一页
1
2
下一页
上一篇:
VB图像处理之几个常用滤镜的实现
下一篇:
VB实现图像在数据库的存储与显示
【
文章评论
】 【
收藏本文
】 【
推荐好友
】 【
打印本文
】 【
我要投稿
】 【
论坛讨论
】
相关文章:
·
VB图像处理之像素的获取和输出
·
VB实现图像在数据库的存储与显示
·
VB图像处理之二次线性插值的应用
·
VB图像处理之几个常用滤镜的实现
·
VB图像处理之铅笔画算法和木雕算法
·
用VB6.0编写磁盘格式化程序
·
VB实现文件数据对SQLServer上传下载
·
用VB实现实时曲线的绘制和保存
·
VB图像处理之图像的亮度对比度调整
·
VB图像处理之图像的色彩纠正
文章评论:
(1条)
请留名:
匿名评论
点击查看所有评论
论坛讨论
声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。