本节目标:
(1) 我忽然间想到一个分区域读图取轮廓的方法,想了一夜,觉得要实现看看效果怎样。
(1) 我忽然间想到一个分区域读图取轮廓的方法,想了一夜,觉得要实现看看效果怎样。
实现步骤:
(1)首先确定了中心思想,对于一张图的轮廓,必然是像素变化比较剧烈的点,这个先前已经有了
简易的判定。但是以疥是按行列扫描判定,这次我决定按区块扫描判定。按区块的目的是因为如果区块
够小,可以把它当作一个单元来处理,于是我定义了这样一个结构:
/**
* @usage 分块治图取轮廓
* @author mw
* @date 2015年12月20日 星期日 10:46:21
* @param
* @return
*
*/
function Nexus() {
//方格大小范围,比如2*2, 10*10, 100*100个象素
this.range = 100;
//方格序数
this.xth = 0;
this.yth = 0;
//方格开始和结束的x,y象素点坐标
this.xBeg = 0;
this.xEnd = 0;
this.yBeg = 0;
this.yEnd = 0;
//候选点的x, y极值
this.xMax = 0;
this.xMin = 0;
this.yMax = 0;
this.yMin = 0;
//候选点个数和比例
this.count = 0;
this.percent = 0;
//候选点的x, y总值
this.xTotal = 0;
this.yTotal = 0;
//候选点族的中心
this.xCenter = 0;
this.yCenter = 0;
//候选点族的半径区域
this.r = 0;
//需要传入参数xth, yth, range
this.init = function(xth, yth, range) {
this.xth = xth;
this.yth = yth;
this.range = range;
//方格开始和结束的x,y象素点坐标
this.xBeg = 0 + this.xth * this.range;
this.xEnd = 0 + (this.xth+1) * this.range;
this.yBeg = 0 + this.yth * this.range;
this.yEnd = 0 + (this.yth+1) * this.range;
};
//传入7个参数
this.calc = function(count, xTotal, yTotal, xMax, yMax, xMin, yMin) {
this.count = count;
this.xTotal = xTotal;
this.yTotal = yTotal;
this.xMax = xMax;
this.xMin = xMin;
this.yMax = yMax;
this.yMin = yMin;
this.percent = this.count / (this.range * this.range);
//候选点族的中心