| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1120 人关注过本帖
标题:数字放大1.5倍如何实现?
只看楼主 加入收藏
ba_wang_mao
Rank: 2
来 自:成都理工大学
等 级:论坛游民
帖 子:297
专家分:27
注 册:2006-11-7
收藏
 问题点数:0 回复次数:4 
数字放大1.5倍如何实现?

一笔苍穹,我想通过下面的函数取得(16X8点阵)ASCII点阵首址,然后将该点阵横向放大1.5倍,纵向放大1.5倍,然后输出到屏幕上,如何实现呢?
/////////////////////////////////////////////////////////////////////////////////////////////////
//获得 ASCII ROM字符集首址
/////////////////////////////////////////////////////////////////////////////////////////////////
unsigned char far *get_ASCII_rom(unsigned int BX)
{
_AX = 0x1130;
_BX = BX;
__int__(0x10);
return (unsigned char far *)MK_FP(_ES,_BP);

}

搜索更多相关主题的帖子: 数字 
2006-12-07 10:00
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 

首先图形的缩放使用乘法算出新的映射坐标;

A.若要放大1倍,应将每一个像素都重复一次,N个像素变成了2N个像素,图像放大为2倍;

B.若要缩小1/2,应该每隔一个像素删除一个像素,2N个像素变成了N个像素,图像缩小一半;

C.若要放大1.5倍,怎么办?假设原有2N个像素,现在欲变成3N个像素,须添加N个像素,所以应对原图每隔一个像素添加一个重复像素;

D.若要缩小1/3,就是C的逆过程:每隔两个像素删除一个像素。

2006-12-07 12:15
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 

再有,在坛子里提问最好不要指定回答人,这样无疑是让其他人望而却步,不利于更快的获得答案。

2006-12-07 12:17
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
收藏
得分:0 
对于图像缩放,算法都是比较简单的,最简单的是最近邻算法,速度快,因为不需要计算颜色值,在VGA13H中已经实现,可以参考。
效果比较好的是双线性插值法,速度也比较快,算法和原理都比较简单,可以参考图形学的资料。
插值法都要重新计算新像素点的颜色值,而目前的VGA13H只能支持调色板位图,因此没有实现。
当然还有B样条插值等更加复杂的插值算法,能够获得更好的视觉效果,但是在速度上就会变慢了。
2006-12-07 12:40
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
收藏
得分:0 

首先需要有一个概念,就是计算机所能处理的都是数字信号。对于模拟信号,需要对其进行采样和量化。学过数字信号处理的都应该知道,采样后的信号,与原始的模拟信号相比不同之处在于,在频域里,数字信号在高频部分对原始的模拟信号的频谱进行了周期性的延拓。也就是说如果给你一个信号,一个理想的低通滤波器,对这个数字信号作一个理想的低通滤波,就可以无失真的还原出原始的模拟信号。
图像作为一种二维波,也是一种信号,只不过是二维的。数字图像也是对模拟图像进行采样和量化处理得来的。对于数字图像的缩放的基本原理就是,从数字图像数据,重建出原始的模拟图像,然后对这个原始的模拟图像进行重采样处理。所以数字图像缩放的过程,实质上是重建原始的模拟图像,然后重采样的过程。
因此,数字图像缩放的一步骤都是,先对数字图像进行一个低通滤波,然后再进行重采样。在工程实现上,低通滤波一般不是真正的将数字图像转换到频域,然后构建滤波器进行处理,而是使用一些更加简单的方法,比如最临近点法、双线性插值法,这些实质上都是在重建原始的模拟信号,实质上就是一个滤波的过程,相应的最近邻算法等都可以理解为实质上的滤波器。对于重采样,就体现为采样点的坐标的计算。工程上,采样和重建模拟信号不是独立进行的,基本上是同时进行的,这是为了保证效率,另外一方面就是计算机毕竟是计算机,它是永远无法表示模拟信号的。重建模拟信号在计算机中,只是一种计算模型而已,在处理过程中是看不到模拟信号的实体的,因为计算机永远无法成为模拟信号的载体。因此,一般的,都是先计算缩放后的图像的坐标与原数字图像的映射关系,这一步相当于重采样,然后再根据这个关系和模拟图像的计算模型,计算出重采样点的颜色值。处理完所有的像素点就完成了缩放处理。
当然,我讲的不是很清楚,并且大部分是理论上的知识,不具备可操作性,具体的算法可以参考我的代码。
理论方面,要想深入研究,需要学习以下课程:信号与系统、数字信号处理、计算机图形学、数字图像处理。


[此贴子已经被作者于2006-12-7 13:24:50编辑过]

2006-12-07 13:19
快速回复:数字放大1.5倍如何实现?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.118280 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved