背景起伏提出了单位根假设检验可见光图像背景起伏平稳性的方法,理论上证明了时空域变化的广义平稳性。该方法采用ADF假设检验,从时域和空域分析背景灰度的变化,利用线性回归的方法进行协整性检验,从而得出结论。
在平稳的基础上,使用相关长度刻划背景起伏的时空域相关性,得到两个结论。
(1)一维指数模型的时间相关长度分析表明背景起伏具有强时相关性。并且这种强相关性集中体现于像素点灰度均值和相邻的有限帧(1~2帧)。因此提出低阶AR模型(1~2阶)对这种特性进行描述,得到的模型参数可用于图像背景估计。
(2)空间相关长度分析证实了背景起伏具有强的空域相关性。并且图像可以分割成若干个不相关的区域。总的来说,背景起伏具有时空域的双重平稳性和强相关性。
(1):设定峰值阈值,背景的峰值显然比目标峰值小的得,再根据需要确定自己的抑制程度;不过这种做法结果会使目标区域的低峰值也被抑制
(2):利用水平,垂直投影等方法确定目标峰值的区域,将非目标区域进行抑制;
(3):将图像整体除以最大峰值,小的背景峰值会变得很微小;
1、从目标区域外提取一列数据用于建构一幅背景图。因为背景起伏是周期性的,而且分布很简单。
2、尽可能将目标区域的范围提取出来,然后减去构建的背景图。这样就可以保住目标,同时能很好地把背景起伏去掉。
具体的做法很简单:
一、从原图的矩阵中提出一列能反映背景的数据
二、创建一个与原图大小一样的矩阵
三、新矩阵的每一行的数据都是一样的,具体是什么由从原图提取出来的那一列数据决定然后把主要的特征区域的值置为0,基本就可以得到上面的背景估计了。该方法通用性不是很强,但对于这个例子来说,效果很好。
javascript实现起伏的水波背景效果
<!DOCTYPE html>
<html>
<head>
<title>水波背景</title>
<meta charset="gb2312" />
<style>
html, body {width:100%; height:100%; padding:0; margin:0;}
</style>
</head>
<body>
<canvas ></canvas>
<script type="text/javascript">
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
canvas.width = canvas.parentNode.offsetWidth;
canvas.height = canvas.parentNode.offsetHeight;
//如果浏览器支持requestAnimframe则使用requestAnimframe否则使用setTimeout
window.requestAnimframe = (function(){
return window.requestAnimationframe ||
window.webkitRequestAnimationframe ||
window.mozRequestAnimationframe ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
// 波浪大小
var boHeight = canvas.height / 10;
var posHeight = canvas.height / 1.2;
//初始角度为0
var step = 0;
//定义三条不同波浪的颜色
var lines = ;
function loop(){
ctx.clearRect(0,0,canvas.width,canvas.height);
step++;
//画3个不同颜色的矩形
for(var j = lines.length - 1; j >= 0; j--) {
ctx.fillStyle = lines;
//每个矩形的角度都不同,每个之间相差45度
var angle = (step+j*50)*Math.PI/180;
var deltaHeight = Math.sin(angle) * boHeight;
var deltaHeightRight = Math.cos(angle) * boHeight;
ctx.beginPath();
ctx.moveTo(0, posHeight+deltaHeight);
ctx.bezierCurveTo(canvas.width/2, posHeight+deltaHeight-boHeight, canvas.width / 2, posHeight+deltaHeightRight-boHeight, canvas.width, posHeight+deltaHeightRight);
ctx.lineTo(canvas.width, canvas.height);
ctx.lineTo(0, canvas.height);
ctx.lineTo(0, posHeight+deltaHeight);
ctx.closePath();
ctx.fill();
}
requestAnimframe(loop);
}
loop();
</script>
</body>
</html>