每天进步一点点------Alpha半透明图形叠加算法Matlab+Verilog实现
Alpha图形叠加算法Matlab+Verilog实现
1.1. Alpha算法的研究
Alpha通道是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明[15]。
半透明混合算法目前在常用到的算法是AlphaBlend。其算法如下:假设一幅图象是A,另一幅透明的图象是B,那么透过B去看A,看上去的图象C就是B和A的混合图象,设B图象的透明度为alpha(取值为0-1,1为完全透明,0为完全不透明)。Alpha每个通道色彩混合公式如下:
R(x)、G(x)、B(x)分别指颜色x的RGB分量原色值。从上面的公式可以知道,Alpha其实是一个决定混合透明度的数值。改变这个 alpha 值可以得到一个渐变的效果。分离RGB色用"位与"、"移位"运算的方法。
透明的比例按2的N次幂来分级,这样可以快速运算。如果是按256级Alpha = 1/256,B图的权重 = (256-n)/256,则A图的权重= n/256,由式 6-1可以得到红色通道256级半透明算法:
1.2. Alpha算法实现
1.2.1. Matlab代码
% ----------------------------------------------------------------------- % CONFIDENTIAL IN CONFIDENCE % This confidential and proprietary software may be only used as authorized % by a licensing agreement from CrazyBingo (Thereturnofbingo). % In the event of publication, the following notice is applicable: % Copyright (C) 2011-201x CrazyBingo Corporation % The entire notice above must be reproduced on all authorized copies. % Author : CrazyBingo % Technology blogs : http://blog.chinaaet.com/crazybingo % http://www.cnblogs.com/crazybingo % Eamil Address : thereturnofbingo@gmail.com % Filename : RGB_Alpha.m % Data : 2013-04-22 % Version : 1.0 % Description : Alpha Algorithm of 2 RGB Image. % Modification History : % Data By Version Change Description %======================================================================= % 13/04/22 CrazyBingo 1.0 Original % ----------------------------------------------------------------------- clear all; %清除Matlab缓存数据 % ----------------------------------------------------------------------- % Read PC iamge to Matlab IMG1 = imread('E:\Matlab_Information\Matlab_Project\BMP\Fish2.bmp'); % 读取RGB文件,X光的鱼图 IMG2 = imread('E:\Matlab_Information\Matlab_Project\BMP\Water.bmp'); % 读取RGB文件,绿叶湖泊 h = size(IMG1,1); % 读取图像高度 w = size(IMG1,2); % 读取图像宽度 figure(1); subplot(1,2,1); imshow(uint8(IMG1)); subplot(1,2,2); imshow(uint8(IMG2)); % ----------------------------------------------------------------------- % IMG1 add tO IMG2 with alpha algorthm ALPHA_PARAM = 0.6; IMG1 = double(IMG1); IMG2 = double(IMG2); IMG3 = zeros(h,2,3); for i = 1 : h for j = 1 : w IMG3(i,j,1) = IMG1(i,j,1)*ALPHA_PARAM + IMG2(i,j,1)*(1-ALPHA_PARAM); IMG3(i,j,2) = IMG1(i,j,2)*ALPHA_PARAM + IMG2(i,j,2)*(1-ALPHA_PARAM); IMG3(i,j,3) = IMG1(i,j,3)*ALPHA_PARAM + IMG2(i,j,3)*(1-ALPHA_PARAM); end end % ------------------------------------------------------------------------- figure(2); imshow(uint8(IMG3)); title('Alpha Image with IMG1 & IMG2'); imwrite(IMG3,'E:\Matlab_Information\Matlab_Project\RGB_Alpha_Process\RGB_Alpha.bmp'); %保存重建后的BMP
1.2.2. 效果图
1.2.3. 半透明算法的FPGA实现
在Verilog中,通过组合逻辑,运用内嵌乘法器,以及移位运算,可以快速实现对两幅图像的透明度的实时控制。设计中设定了256级半透明级数,通过按键来控制alpha_data的参数,从而实现调节两幅图像之间的透明度。Verilog算法如下所示:
wire [:] red_data = (('d255-alpha_data)* lcd_data_reg[15:11]+ alpha_data * lcd_data_in[15:11])>> 8; //红色通道 wire [:] gre_data = (('d255-alpha_data)*lcd_data_reg[10:5]+ alpha_data * lcd_data_in[10:5])>> 8; //绿色通道 wire [:] blu_data = (('d255-alpha_data)*lcd_data_reg[4:0]+ alpha_data * lcd_data_in[4:0])>> 8; //蓝色通道 assign lcd_data = disp_area?{red_data[:],gre_data[:], blu_data[:]} : lcd_data_reg; //RGB合并
为测试半透明算法,将分形图与彩条叠加,通过外部按键的调节,验证了此半透明算法的正确性。VGA半透明图形叠加如下图所示,此时即可见分形图,又可见8条彩条,两者相互融合。
图 6-1 半透明算法验证图
每天进步一点点------Alpha半透明图形叠加算法Matlab+Verilog实现的更多相关文章
- IE, FireFox, Opera 浏览器支持CSS实现Alpha半透明的方法
这个世界变化很快,IE8也快出来了,它将不在支持以前{filter:alpha(opacity=50);}的私有属性,转而支持更规范的私有属性-ms-filter: “progid:DXImageTr ...
- 在本地电脑使用远程服务器的图形界面——包括 MATLAB、PyCharm 等各种软件
在用本地电脑连接远程服务器的时候,大部分时候只能用命令行来操作.虽然可以 在本地电脑用 PyCharm 进行远程调试.在本地电脑远程使用服务器的 Jupyter Notebook.Ubuntu 和 W ...
- 以交互方式将文本添加到图形中(matlab)
这篇博客记录一下怎么用matlab在图形中简单的添加一些文本,以直方图均衡化为例.先看几张图片吧,第一幅是较暗的花粉的电子显微图像和对应的直方图,第二幅是其直方图均衡化的图像和对应的直方图,第三幅是对 ...
- 工程点点app爬虫和sign算法破解
这世界真的什么人都有,哎,继续分析. 通过对工程点点的逆向和抓包分析,发现工程点点需要x-sign和token验证. this.b.a(aVar.b("Accept", " ...
- 2D简单图形相关算法罗列
因为平常在Qt开发过程中经常会与一些简单的2D几何图形打交道,因此学习和掌握一些基本的2D几何计算还是很有必要的,在这里罗列一些常用的基本情况,之后会适时补充. [1] 两点之间距离,根据两个点的差值 ...
- GIS开发 图形常见算法
摘录:OSGeo中国中心 http://www.osgeo.cn/post/ae457 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简 ...
- [原][c++][数学]osg常用图形数学算法小结
1.cos趋近 // a reasonable approximation of cosine interpolation double smoothStepInterp( double t ) { ...
- Linux下无图形界面安装Matlab
1 下载R2015b_glnxa64.iso和破解文件Matlab+2015b+Linux64+Crack 百度网盘可以直接搜索资源.推荐一个可以多线程下载百度网盘超大文件的工具Aria2,均速1.3 ...
- 什么是Alpha通道?
图像处理(Alpha通道,RGB,...)祁连山(Adobe 系列教程)****的UI课程 一个也许很傻的问题,在图像处理中alpha到底是什么? Alpha通道是计算机图形学中的术语,指的是特别的 ...
随机推荐
- Python标准库之时间模块time与datatime模块详解
时间模块time与datatime 时间表示方式: 时间戳 格式化时间字符串 元组 时间戳格式: time.time()#输出1581664531.749063 元组格式: time.localtim ...
- 165.扩展User模型-继承AbstractBaseUser
继承自AbstractBaseUser模型 如果你想要修改默认的验证方式,并且对于User模型上的一些字段不想要,那么可以自定义一个模型,然后继承自AbstractBaseUser,再添加你想要的字段 ...
- Response与ServletContext对象
HTTP协议: 请求消息:客户端发送给服务器端的数据 数据格式: 请求行: 格式: 请求方式 请求url 请求协议/版本 请求头:告诉服务器,当前访问的浏览器自身的一些信息 格式: 请求头名称: 请求 ...
- vue自定义日期选择,类似美团日期选择,日历控件,vue日历区间选择
一个日历的控件,基于vue的,可以日历区间选择,可用于酒店日历区间筛选,动手能力强,可以修改成小程序版本的,先上效果图 里面的颜色样式都是可以修改的 选择范围效果 话不多说,直接上干货,代码可以直接复 ...
- python接口自动化之发送post(四)
1.ssl问题 目前很多的请求使用的都是较为安全的https请求,https请求相对于http安全级别更高,需要验证ssl证书 写代码的时候有两种可以忽略ssl验证的方法 (1)import urll ...
- range()用法
来源:http://www.cnblogs.com/wangwp/p/4535299.html 例子:http://www.cnblogs.com/hongten/p/hongten_python_r ...
- js获取自定义data属性
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- [一本通学习笔记] 字典树与 0-1 Trie
字典树中根到每个结点对应原串集合的一个前缀,这个前缀由路径上所有转移边对应的字母构成.我们可以对每个结点维护一些需要的信息,这样即可以去做很多事情. #10049. 「一本通 2.3 例 1」Phon ...
- energy/heating data source
HeatManDataLake 1. schema: hfors tables ambient_temperature_emd record the ambient temperature hourl ...
- [Luogu]中位数
Description Luogu1168 Solution 一种神奇的做法:开一个大根堆和小根堆,保证大根堆比小根堆多1个元素,且大根堆堆顶元素比小根堆堆顶元素小,那么大根堆堆顶就是中位数.插入的时 ...