ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript 画像処理 - 閾値関数の例 application_javascript スキル

JavaScript 画像処理 - 閾値関数の例 application_javascript スキル

WBOY
リリース: 2016-05-16 17:44:43
オリジナル
1539 人が閲覧しました
はじめに

前回の記事では、画像処理における明るさとコントラストの変化について説明しましたが、今回は閾値関数を作成します。

最も単純な画像分割方法

しきい値処理は、最も単純な画像セグメンテーション方法です。

たとえば、下の写真からリンゴをセグメント化するには、前景と背景の間のグレースケールの差を使用してしきい値を設定します。ピクセルがこのしきい値より大きい場合、黒で表示されます。しきい値より小さい場合は、灰色で表示されます。

Threshold simple example
5つの閾値タイプ

OpenCV と同様に、使いやすいように 5 つのしきい値タイプを提供します。

以下は元の画像の波形表現です。縦軸はピクセルのグレー値を表し、青い線はしきい値のサイズを表します。

Threshold Binary

バイナリしきい値

式は次のとおりです:

texttt{dst} (x,y) = fork{texttt{maxVal}}{if $texttt{src}(x,y) > texttt{thresh}$}{0}{otherwise}

画像表現は次のとおりです:

Threshold Binary

閾値を超えた場合は最大値(つまり255)となり、それ以外の場合は最小値(つまり0)となることがわかります。この関数を実装するには関数が必要です:

コードをコピー コードは次のとおりです:

var CV_THRESH_BINARY = function(__value, __thresh, __maxVal){
return __value > __maxVal : 0;


逆バイナリしきい値

式は次のとおりです:

texttt{thresh}$}{texttt{maxVal}}{otherwise}" src="http://files.jb51.net/file_images/article/201301/2013010314344055.png">texttt{dst} (x,y) = fork{0}{if $texttt{src}(x,y) >
</P>画像表現は次のとおりです: <P>
</P><P><IMG class=align-center style=

これは逆で、閾値を超えた場合は最小値となり、そうでない場合は最大値となります。関数の実装は次のとおりです:

コードをコピー コードは次のとおりです。
var CV_THRESH_BINARY_INV = function(__value, __thresh, __maxVal){
return __thresh ? :
};


しきい値の切り捨て

式は次のとおりです:

texttt{thresh}$}{texttt{src}(x,y)}{otherwise}" src="http://files.jb51.net/file_images/article/201301/2013010314344057.png" >texttt{dst} (x,y) = fork{texttt{threshold}}{if $texttt{src}(x,y) >
</P>画像表現は次のとおりです: <P>
</P><P><IMG class=align-center style=

これは、しきい値を超えると切り捨てられることがわかります。関数の実装は次のとおりです:

コードをコピー コードは次のとおりです。
var CV_THRESH_TRUNC = function(__value, __thresh, __maxVal){
__値を返す > __thresh :
};


しきい値を 0 に設定

式は次のとおりです:

texttt{dst} (x,y) = fork{texttt{src}(x,y)}{if $texttt{src}(x,y) > texttt{thresh}$}{0}{otherwise}

画像表現は次のとおりです:

Threshold Zero

この場合、閾値より小さい値はすべて0となります。関数の実装:

コードをコピー コードは次のとおりです。

var CV_THRESH_TOZERO = function(__value, __thresh, __maxVal){
__value を返す >


式は次のとおりです: texttt{thresh}$}{texttt{src}(x,y)}{otherwise}" src="http://files.jb51.net/file_images/article/201301/2013010314344061.png" >

画像表現は次のとおりです:

texttt{dst} (x,y) = fork{0}{if $texttt{src}(x,y) >しきい値を超えると 0 に設定されます。関数の実装は次のとおりです。</P><P></P><P><IMG class=align-center style=コードをコピーします


コードは次のとおりです。 :

閾値処理機能実装



次に、画像全体に対して上記のような閾値処理を行う関数を作ります。

コードをコピー


コードは次のとおりです。

sData = __src.data,
dst = __dst || new Mat(height, width, CV_GRAY),
dData = dst.data、
maxVal = __maxVal || 255、
threShouldType = __thresholdType ||

var i, j, offset;高さ; i --;){
for(j = width; j--;){
オフセット = i * 幅 j;
dData[オフセット] = threShouldType(sData[オフセット], __thresh, maxVal);
}
}

}else{
error(arguments.callee, UNSPPORT_DATA_TYPE/* {line} */); dst;
};


この関数は比較的単純です。つまり、




コードをコピー


コードは次のとおりです。

threShouldType(sData[offset], __thresh, maxVal)

戻り値。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート