Javascript图像处理:矩阵基本方法

前言

上一篇文章,我们定义了矩阵,这篇文章我们来给矩阵添加一些常用方法。

toString方法

toString方法通常用作将对象转成字符串描述,所以我们将这一方法定义为输出矩阵元素。

Mat.prototype.toString = function(){
    var tempData = this.data,
        text = "Mat("+ this.type +") = {\n",
        num = this.col * this.channel;
    for(var i = 0; i < this.row; i++){
        text += "["
        for(var j = 0; j < num; j++){
            text += (tempData[i * num + j] + ",");
        }
        text += "]\n";
    }
    text += "}";
    return text;
};

这样,我们就可以通过:

console.log(mat);

来输出矩阵了。

clone方法

实际上,我们可 以通过构造函数进行克隆操作,不过依然提供一个方法来方便记忆、使用。

Mat.prototype.clone = function(){
    return new Mat(this.row, this.col, this.data);
};

获取指定元素

我们有两种方法获取矩阵元素。

数组方法

由于实际上Mat是以数组形式保 存数据的,而数据看起来是这样的:

R00  G00  B00  A00  R01  G01  B01  A01  ……  R0n  G0n  B0n  A0n

R10  G10  B10  A10  R11  G11  B11  A11  ……  R1n  G1n  B1n  A1n

……

Rm0  Gm0  Bm0  Am0  Rm1  Gm1  Bm1  Am1  ……  Rmn  Gmn  Bmn  Amn

其中大写R、G、B、A分别代表各通道的数值,而下标第一个表示行号,第二个表示 列号。即第k行,第j列的G通道数值就是Gkj。

我们很容易得到对于一个Mat类型的mat来说,第k行,第j列像素的每 个元素分别是:

Rkj = mat.data[(k * mat.col + j) * 4 + 0]

Gkj = mat.data[(k * mat.col + j) * 4 + 1]

Bkj = mat.data[(k * mat.col + j) * 4 + 2]

Akj = mat.data[(k * mat.col + j) * 4 + 3]

Buffer部分引用方法

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索矩阵
, 方法
, text
, this
, mat
, data
, 读mat文件
, 第k小元素
javascript数组克隆
,以便于您获取更多的相关知识。

时间: 2024-10-29 04:02:50

Javascript图像处理:矩阵基本方法的相关文章

Javascript图像处理

思路 HTML5的canvas提供了getImageData接口来获取canvas中的数据,所以我们能够先用drawImage接口将图片画在 canvas上然后再通过getImageData得到图片数据矩阵. canvas的浏览器支持情况,请参见: http://html5test.com/compare/feature/canvas-context.html 需要注意,虽然IE9开始支持了canvas接口,但是 其getImageData获取的数据并不是以标准的TypedArray方式存储的,

JavaScript中的anchor()方法使用详解

  这篇文章主要介绍了JavaScript中的anchor()方法使用,是JS入门学习中的基础知识,需要的朋友可以参考下 此方法创建一个用作超文本目标的HTML锚. 语法 ? 1 string.anchor( anchorname ) 下面是参数的详细信息: anchorname: 定义了锚的名称 返回值: 返回其锚标记的字符串 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <html> <head> <title>JavaScript

JavaScript Window浏览器对象模型方法与属性汇总

  本文给大家汇总分享的是JavaScript Window浏览器对象模型方法与属性,十分的细致全面,这里推荐给大家,有需要的小伙伴可以参考下. Window 对象 所有浏览器都支持 window 对象.它表示浏览器窗口. 所有 JavaScript 全局对象.函数以及变量均自动成为 window 对象的成员. 全局变量是 window 对象的属性. 全局函数是 window 对象的方法. 1. open方法 语法格式: window.open(URL,窗口名称,窗口风格) 功能:打开一个新的窗

JavaScript中Math对象方法使用概述

 JavaScript中Math对象方法如向上取整,有小数就整数部分加1,四舍五入.向下取整等等,下面为大家详细介绍下 1.丢弃小数部分,保留整数部分 parseInt(5/2)   2.向上取整,有小数就整数部分加1   Math.ceil(5/2)   3,四舍五入.   Math.round(5/2)   4,向下取整   Math.floor(5/2)   Math 对象的方法 FF: Firefox, N: Netscape, IE: Internet Explorer   方法 描述

C#后台调用前台javascript的五种方法小结

在网上找了找,发现有三种方法可以访问到前台代码: 第一种,OnClientClick (vs2003不支持这个方法) <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="client_click()" /> client_click() 就是javascript的一个方法. 第二种,Button1.Attributes.Add(&

Javascript实例教程:DOM方法创建和修改表格

文章简介:Javascript实例教程:DOM方法创建和修改表格. <table>元素是HTML中最复杂的结构之一.要想创建表格,一般都必须涉及表示表格行.单元格.表头等方面的标签.由于涉及的标签多,因而使用核心DOM方法创建和修改表格往往都免不了要编写大量的代码.假设我们要使用DOM来创建下面的HTML表格: <table border="1" width="100%"> <tbody> <tr> <td>

使用RequireJS优化JavaScript引用代码的方法

  这篇文章主要介绍了使用RequireJS优化JavaScript引用代码的方法,RequireJS是一款人气JS库,需要的朋友可以参考下 RequireJS是一个提高你的javascript代码速度和质量的有效方法,同时它还让你的代码更容易阅读和维护. 在本文中,我会为你介绍RequireJS和应该如何使用它.我们讨论引入文件和定义模块,甚至还会接触优化方面的知识. 简单的说,require.js是一个脚本载入程序,允许你把你的javascript代码独立成文件和模块,同时管理每个模块间的依

javascript背景时钟实现方法

  本文实例讲述了javascript背景时钟实现方法.分享给大家供大家参考.具体如下: 以下是这个效果的全部代码.[最好从一个空页面开始] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <html> <head> <TITLE>背景时钟</TITLE> <script language=javaScri

JavaScript中的异常处理方法介绍

 这篇文章主要介绍了详解JavaScript中的异常处理方法,包括基本的try...catch语句和throw语句的使用,需要的朋友可以参考下     有三种类型的编程错误:(1)语法错误和(2)运行时错误(3)逻辑错误: 语法错误: 语法错误,也被称为解析错误,在编译时进行传统的编程语言,并出现在JavaScript解释时. 例如,下面一行将导致一个语法错误,因为它缺少一个右括号: ? 1 2 3 4 5 <script type="text/javascript"> &