Javascript影像處理:矩陣基本方法

來源:互聯網
上載者:User

前言

上一篇文章,我們定義了矩陣,這篇文章我們來給矩陣添加一些常用方法。

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部分引用方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.