ホームページ ウェブフロントエンド jsチュートリアル Javascript 画像処理 - 一般的なメソッドを matrices_javascript スキルに追加する

Javascript 画像処理 - 一般的なメソッドを matrices_javascript スキルに追加する

May 16, 2016 pm 05:45 PM
画像 マトリックス

はじめに
前の記事では、行列を定義しました。この記事では、行列にいくつかの一般的なメソッドを追加します。

toString メソッド
toString メソッドは通常、オブジェクトを文字列記述に変換するために使用されるため、このメソッドを出力行列要素として定義します。
コードをコピー コードは次のとおりです。

Mat.prototype.toString = function() {
var tempData = this.data,
text = "Mat(" this.type ") = {n",
num = this.col *
for(var i = 0; i < this.row i ){
text = "["
for(var j = 0; j < num; j ){
text = (tempData[i * num j] " ,");
テキスト = "]n">}
テキストを返します。 >
このようにして、次のように渡すことができます:



コードをコピーします

コードは次のとおりです: console.log(mat); 行列を出力します。

clone メソッド
実際には、コンストラクターを通じてクローン操作を実行できますが、記憶と使用を容易にするメソッドを提供します。


コードをコピー


指定された要素を取得します

行列要素を取得する 2 つの方法。

配列メソッド 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 はそれぞれ各チャネルの値を表し、最初の添え字は行番号を表し、2 番目の添え字は列番号を表します。つまり、k 行 j 列の G チャネル値は Gkj です。
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]


バッファの部分参照メソッド

バッファの部分参照を通じて、行列の部分参照を取得できます。これを使用してピクセル データ配列を取得でき、この配列の値を変更すると、対応する行列データも変更されます。別の例として、他のデータ型のデータを読み取ることができます。これらは通常の配列では実現できません。 at メソッドの実装を見てみましょう:


コードをコピー

コードは次のとおりです: Mat.prototype.at = function(__type, __x, __y){ var type = __type, x = __x || 0, y = __y || = this.col * this.channel * this.bytes,
len = 1;
if(type.indexOf("Vec") > -1){
var temp = __type.match(/ Vec(d )( [a-z])/);
len = parseInt(temp[1]);
switch(temp[2]){
case "b":
type = " uchar";
break;
case "s":
type = "short";
break;
case "i":
type = "int";
ブレーク;
ケース "f":
type = "float";
case "d":
type = "double";
}
switch(type){
case "uchar":
return new Uint8Array(this.buffer, (y * rowLen x), len); "short":
return new Int16Array(this.buffer, (y * rowLen x * 2), len);
break;
case "int":
return new Int32Array(this.buffer) , (y * rowLen x * 4), len);
break;
case "float":
return new Float32Array(this.buffer, (y * rowLen x * 4), len); 🎜>break;
case "double":
return new Float64Array(this.buffer, (y * rowLen x * 8), len);
break;
console. error("サポートされていないデータ型")
}
};
ArrayBuffer と TypedArray についてよくわからない場合は、「HTML5 の新しい配列」を参照してください。
文字列型 - 返されるデータ型。サポート:
uchar 符号なし 8 ビット整数
short 符号付き 16 ビット整数
int 符号付き 32 ビット整数
float 符号付き 32 ビット浮動小数点数
二重符号付き 64 ビット浮動小数点数値

Vec ベクトル形式
ベクトル形式の文字列のスペルは次のとおりです: Vec (型) (数値)、たとえば、Vecb4 は 4 つの符号なし 8 ビット整数です。ピクセル データの取得方法。たとえば、マットの行 j と列 k のピクセル データを取得するには、次のコマンドを使用できます。
コードをコピー コードは次のとおりです:

mat.at("Vecb4", j, k);

int x - 行数取得する要素の行列内。
int y - 取得する要素の行列の列数。

getRow メソッドと getCol メソッド
at の実装メソッドと同様に、特定の行または列を取得するメソッドを簡単に記述できます:
コードをコピーします コードは次のとおりです:

Mat.prototype.getRow = function(__i){
var len = this.col * this.channel,
rowLen = len * this.bytes,
i = __i ||
return new this.data.constructor(this.buffer, i * rowLen, len) ;
};

コードをコピーします コードは次のとおりです。
Mat.prototype .getCol = function(__i){
var len = this.col * this.channel,
rowLen = len * this.bytes,
array = [],
i = __i || 0 ;
function getAllElement(__constructor){
var row = this.row,
for(var j = 0; j < row; j ){
array.push(new __constructor(this.buffer, j * rowLen i, 1 * channel));
}
}
getAllElement(this.data.constructor); >return array;
};



rowRange メソッドとcolRange メソッド
同様に、行と列を指定するメソッドも取得できます。
コードをコピーします

コードは次のとおりです: Mat.prototype.rowRange = function(__i, __j){ var len = this.col * this.channel、rowLen = len * this.bytes、array = []、
i = __i ||
j = __j || .row;
function getAllElement(__constructor){
var row = this.row;
for(var k = i; k <= j; k ){
array.push(new __constructor (this.buffer, k * rowLen, len));
}
}
getAllElement(this.data.constructor);

;




コードをコピーします

コードは次のとおりです。
Mat.prototype.colRange = function(__i , __j){ var len = this.col * this.channel, rowLen = len * this.bytes, array = [], i = __i || j = __j || this.col; function getAllElement(__constructor){
var row = this.row
channel = this.channel; ; k ){
array.push (new __constructor(this.buffer, k * rowLen __i, (__j - __i 1) * チャネル));
}
}
getAllElement(Float64Array);
return array;
} ;


これら 4 つのメソッドはすべて Array の配列を返します。この配列rectのj行k列の要素を取得したい場合は、
rect[j][k]を使用できます。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11でデスクトップの背景の最近の画像履歴をクリアする方法 Windows 11でデスクトップの背景の最近の画像履歴をクリアする方法 Apr 14, 2023 pm 01:37 PM

&lt;p&gt;Windows 11 ではシステムの個人設定が改善され、ユーザーが以前に行ったデスクトップの背景の変更の最近の履歴を表示できるようになりました。 Windows システム設定アプリケーションの個人設定セクションに入ると、さまざまなオプションが表示されます。背景の壁紙の変更もその 1 つです。ただし、システムに設定されている背景壁紙の最新の履歴を確認できるようになりました。これを見るのが嫌で、この最近の履歴を消去または削除したい場合は、この記事を読み続けてください。レジストリ エディターを使用してこれを行う方法の詳細を学ぶのに役立ちます。 &lt;/p&gt;&lt;h2&gt;レジストリ編集の使用方法

Windows スポットライトの壁紙画像を PC にダウンロードする方法 Windows スポットライトの壁紙画像を PC にダウンロードする方法 Aug 23, 2023 pm 02:06 PM

窓は決して美観を無視するものではありません。 XP の牧歌的な緑の野原から Windows 11 の青い渦巻くデザインに至るまで、デフォルトのデスクトップの壁紙は長年にわたってユーザーの喜びの源でした。 Windows スポットライトを使用すると、ロック画面やデスクトップの壁紙に使用する美しく荘厳な画像に毎日直接アクセスできるようになります。残念ながら、これらの画像は表示されません。 Windows スポットライト画像の 1 つが気に入った場合は、その画像をダウンロードして、しばらく背景として保存できるようにする方法を知りたいと思うでしょう。知っておくべきことはすべてここにあります。 Windowsスポットライトとは何ですか? Window Spotlight は、設定アプリの [個人設定] &gt から利用できる自動壁紙アップデーターです。

Python で画像セマンティック セグメンテーション テクノロジを使用するにはどうすればよいですか? Python で画像セマンティック セグメンテーション テクノロジを使用するにはどうすればよいですか? Jun 06, 2023 am 08:03 AM

人工知能技術の継続的な発展に伴い、画像セマンティックセグメンテーション技術は画像分析分野で人気の研究方向となっています。画像セマンティック セグメンテーションでは、画像内のさまざまな領域をセグメント化し、各領域を分類して、画像の包括的な理解を実現します。 Python はよく知られたプログラミング言語であり、その強力なデータ分析機能とデータ視覚化機能により、人工知能技術研究の分野で最初に選択されます。この記事では、Python で画像セマンティック セグメンテーション技術を使用する方法を紹介します。 1. 前提知識が深まる

人工知能の歴史とマトリックスを探る: 人工知能チュートリアル (2) 人工知能の歴史とマトリックスを探る: 人工知能チュートリアル (2) Nov 20, 2023 pm 05:25 PM

このシリーズの最初の記事では、人工知能、機械学習、深層学習、データ サイエンスなどのつながりと違いについて説明しました。また、シリーズ全体で使用するプログラミング言語やツールなどについても、いくつかの難しい選択をしました。最後に、行列の知識も少し紹介しました。この記事では、人工知能の中核であるマトリックスについて詳しく説明します。その前に、まず人工知能の歴史を理解しましょう。なぜ人工知能の歴史を理解する必要があるのでしょうか?歴史上何度もAIブームはありましたが、多くの場合、AIの可能性に対する大きな期待は実現しませんでした。人工知能の歴史を理解すると、この人工知能の波が奇跡を起こすのか、それともはじけようとしている単なるバブルなのかを知ることができます。私たち

iOS 17: 写真でワンクリックトリミングを使用する方法 iOS 17: 写真でワンクリックトリミングを使用する方法 Sep 20, 2023 pm 08:45 PM

iOS 17 の写真アプリを使用すると、Apple は写真を仕様に合わせて簡単にトリミングできるようになります。その方法については、読み続けてください。以前の iOS 16 では、写真アプリで画像をトリミングするにはいくつかの手順が必要でした。編集インターフェイスをタップし、トリミング ツールを選択し、ピンチでズームするジェスチャまたはトリミング ツールの角をドラッグしてトリミングを調整します。 iOS 17 では、Apple がありがたいことにこのプロセスを簡素化し、写真ライブラリで選択した写真を拡大すると、画面の右上隅に新しい切り抜きボタンが自動的に表示されるようになりました。クリックすると、選択したズームレベルで完全なトリミングインターフェイスが表示されるので、画像の好きな部分をトリミングしたり、画像を回転したり、画像を反転したり、画面比率を適用したり、マーカーを使用したりできます。

Windows で PowerToys を使用して画像のサイズを一括変更する方法 Windows で PowerToys を使用して画像のサイズを一括変更する方法 Aug 23, 2023 pm 07:49 PM

日常的に画像ファイルを扱う必要がある人は、プロジェクトや仕事のニーズに合わせて画像ファイルのサイズを変更する必要があることがよくあります。ただし、処理する画像が多すぎる場合、画像を個別にサイズ変更すると、多くの時間と労力がかかる可能性があります。この場合、PowerToys のようなツールは、画像サイズ変更ユーティリティを使用して画像ファイルのサイズをバッチで変更するのに役立ちます。 Image Resizer 設定をセットアップし、PowerToys を使用して画像のバッチ サイズ変更を開始する方法は次のとおりです。 PowerToys を使用して画像のサイズをバッチ変更する方法 PowerToys は、日常業務のスピードアップに役立つさまざまなユーティリティと機能を備えたオールインワン プログラムです。そのユーティリティの 1 つは画像です

行列の右対角要素の合計を計算する Python プログラム 行列の右対角要素の合計を計算する Python プログラム Aug 19, 2023 am 11:29 AM

人気のある汎用プログラミング言語は Python です。デスクトップ アプリケーション、Web 開発、機械学習など、さまざまな業界で使用されています。幸いなことに、Python には初心者に適したシンプルで理解しやすい構文があります。この記事では、Python を使用して行列の右対角の合計を計算します。マトリックスとは何ですか?数学では、数学的オブジェクトまたはそのプロパティを記述するために長方形の配列または行列を使用します。これは、行と列に配置された数値、記号、または式を含む長方形の配列または表です。例: -234512367574 したがって、これは 3 行 4 列の行列であり、3*4 行列として表されます。さて、行列には​​ 2 つの対角線、主対角線と副対角線があります。

Pythonでnumpyを使用して行列またはndArrayの行列式を計算するにはどうすればよいですか? Pythonでnumpyを使用して行列またはndArrayの行列式を計算するにはどうすればよいですか? Aug 18, 2023 pm 11:57 PM

この記事では、Python の numpy ライブラリを使用して行列の行列式を計算する方法を学びます。行列の行列式は、行列をコンパクトな形式で表現できるスカラー値です。これは線形代数で有用な量であり、物理学、工学、コンピューターサイエンスなどのさまざまな分野で数多くの応用があります。この記事では、まず行列式の定義と性質について説明します。次に、numpy を使用して行列の行列式を計算する方法を学び、いくつかの例を通して実際にどのように使用されるかを見ていきます。マトリクスの行列式は、プロパティを記述するために使用できるスカラー値です。

See all articles