解説クラスCopyClear(5)
解説クラスCopyClear(5)
2024年2月29初講(初稿)
この講義は解説『解説クラスCopyClear(4)』の
続きです!
(4-9)正規相関系関数群
上図で青枠の4×4画像と緑枠の4×4画像の相関値
「-1.0」と赤枠の4×4画像とオレンジ枠の4×4画像
の相関値「-0.1」に成る事を示し
これは、解説『参考:ADS社画像処理装置』から
PDF形式のファイルをダウンロード出来る様にしています
が、「1.i・Zooコマンド解説書」の中のダウン
ロードファイル「Cmd.pdf」のPDF文書から
「(2)正規化相互相関」の所に記載して居る式です!
残念ながら私自身が、TEX(テフ)の記載方法を勉強して
無いので「本来ならば、本文に数式を記載」した方が見易い
と思うのですが、図で間に合わせました!
これ等の式を適応させて「4×4画像」の画素数値を適応さ
せた手順としてのメモ書きのエクセルのシートが
です?!適当に枠内の数値を変えてドウナルカ実験して見て
下さい!勿論、枠内は、「4×4サイズ画像例1」の
(B2)⇒(E5)の矩形(四角形)枠、で
「「4×4サイズ画像例2」が(G2)⇒(J5)の
矩形(四角形)枠、で
「「4×4サイズ画像例3」が(B9)⇒(E12)の
矩形(四角形)枠、で「「4×4サイズ画像例4」が
(G9)⇒(J12)の矩形(四角形)枠内の数値を手作業
で変更して色々試して下さい!シートの平均値とか相関計算
の計算式も参考にして下さい!
です?!適当に枠内の数値を変えてドウナルカ実験して見て
下さい!
勿論、入れるデータは、単色(モノクロ)画像画素データと
して(0・・255)の1バイト単位符号なし値を入れて下
さい!
正規化相関での画像比較で4×4と極基本的な小さなサイズ
を示しましたが、モット大きな画像も効率的に比較する為の
ピラミッド圧縮と言う概念の一部を図示して起きます!
これもロードファイル「Cmd.pdf」のPDF文書から
「(4)ピラミッド構造」の所に記載して居る文章です!
そして関連する概念も示します!
これもロードファイル「Cmd.pdf」のPDF文書から
「(5)ピラミッド圧縮」の所に記載して居る文章です!
★★注意★★
「正規相関系関数群」をクラス「CopyClear」の
終わり頃に組み込んだ理由:私がADS社在籍中の20世紀
最後に接した有効な「画像処理技法」と認識し、使い道が、
多数考えられるので「基礎的な画像処理クラス」としての
クラス「CopyClear」に入れるのが相応しいと考え
たからです!
★★注意★★
「画像処理技法としての正規相関」は、ベタな画像の比較だ
けで無く、例に使用した「4×4升」画像の様な小さな部分
画像の比較を行う事を組み合わせて時間差≪撮影時間が異な
る:動画では、前後のフレーム間比較≫で物体がどの方向に
ドレだけ動いたかが分かるとか、ベクトル表示等、多彩な使
い方が出来ます!更に21世紀にAIで画像を認識する最も
基本が正規相関で得られた?!画像間相関値=画像間一致率
で得られた一致率を使用してディープラーニングを行って居
る筈です!
(4-9-1)関数「void CorrImage44(
TypeArray* pa,TypeArray* pb,double *buf,
int nStepH,int nStepV,int &resH,int &resV);」
void CorrImage44( // 4×4画素正規化相関:画像単位
TypeArray* pa, // A配列
TypeArray* pb, // B配列
double* buf, // 結果バッファー
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「44」は、4×4=縦(X座標方向:水平方向)が4画素×
横(Y座標方向:垂直方向)が4画素と言う基本的な相関を
計算する画像サイズを意味します!
相関値を算出し比較する画像は、
仮引数「TypeArray* pa,」と仮引数「TypeArray* pb,」
で示される画素単位「w=1」画像専用です!
★注意★専用に出来て居るので画素単位「w≠1」の場合は
想定外の動きと成る事に気を付けて下さい!
但し、誤解の無い様に仮引数の画像サイズは、4×4と
勘違いシナイ様に、モット大きな画像を4×4升を
仮引数「int nStepH,int nStepV,」とステップ(間隔)を
開けて比較する事で画像全体を比較≪相関値を
仮引数「double *buf,」に算出後格納≫する関数です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-2)関数「void GetHVCorrImage44(
TypeArray* pa,TypeArray* pb,
int nStepH,int nStepV,int &resH,int &resV);」
void GetHVCorrImage44( // 4×4画素正規化相関用升目個数取得
TypeArray* pa, // A配列
TypeArray* pb, // B配列
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「CorrImage44」は、直前に説明した
関数「void CorrImage44()」の事です!
この「GetHVCorrImage44()」は、補助的に関数
「void CorrImage44()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void CorrImage44()」の仮引数「double *buf,」の
バッファサイズを取得する為のサイズとします!
★注意★何故、無計画に泥縄的に関数を作成して居るかと
言うと、正規化相関関連の関数は「お初」な技術なので走り
ながら、考え、「トライ&エラー」を繰り返したからです!
他の画像処理関連も多かれ少なかれ「トライ&エラー」の塊
ですが、特に多いのがこの手法ですし、
エッセイ『20世紀最後のお仕事』で記載した富士通製造の
特殊用途ボードからも使用していた技術を流用して居る等、
多くの技術を詰め込んだのもココの関数群です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-3)関数「
void AverageImage44(
TypeArray* pa,BYTE *buf,
int nStepH,int nStepV,
int &resH,int &resV);」
void AverageImage44( // 4×4画素平均:画像単位
TypeArray* pa, // A配列
BYTE* buf, // 結果バッファー:BYTE
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Average」は、勿論英単語で「平均値」を意味します!
「Image44」で画像のサイズが4×4を意味します!
詰り、関数「void CorrImage44()」を計算する元に成る平均
値の作成用の平均値が仮引数「BYTE *buf,」に算出して格納
する関数です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-4)関数「
void AverageImage44(
TypeArray* pa,double *buf,
int nStepH,int nStepV,
int &resH,int &resV);」
void AverageImage44( // 4×4画素平均:画像単位
TypeArray* pa, // A配列
double* buf, // 結果バッファー:倍精度
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Average」は、勿論英単語で「平均値」を意味します!
「Image44」で画像のサイズが4×4を意味します!
詰り、関数「void CorrImage44()」を計算する元に成る平均
値の作成用の平均値が仮引数「double *buf,」に算出して
格納する関数です!勿論、バッファの型が「BYTE *型」の
関数とのオーバーロード(多重定義)関数です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-5)関数「void CorrImage44Myself(
TypeArray* pa,int *buf,int nStepH,int nStepV,
int &resH,int &resV);」
void CorrImage44Myself( // 4×4画素自己相関:画像単位
TypeArray* pa, // A配列
int* buf, // 結果バッファー
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「CorrImage44」は、関数「void CorrImage44()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-6)関数「void GetHVCorrImage44Myself(
TypeArray* pa,
int nStepH,int nStepV,int &resH,int &resV);」
void GetHVCorrImage44Myself( // 4×4画素自己相関用升目個数取得
TypeArray* pa, // A配列
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「CorrImage44Myself」は、直前に説明した
関数「void CorrImage44Myself()」の事です!
この「GetHVCorrImage44Myself()」は、補助的に関数
「void CorrImage44Myself()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void CorrImage44Myself()」の仮引数「int *buf,」の
バッファサイズを取得する為のサイズとします!
★注意★何故、無計画に泥縄的に関数を作成して居るかと
言うと、正規化相関関連の関数は「お初」な技術なので走り
ながら、考え、「トライ&エラー」を繰り返したからです!
他の画像処理関連も多かれ少なかれ「トライ&エラー」の塊
ですが、特に多いのがこの手法です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-7)関数「void SearchCorrImage44(
TypeArray* pa,TypeArray* pb,double *buf,
int nStepH,int nStepV,int &resH,int &resV);」
void SearchCorrImage44( // 4×4画素画像サーチ
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
double* buf, // 結果バッファー
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Search」は、英単語「Search」で意味「探す」です!
「CorrImage44」は、前に説明した
関数「void CorrImage44()」の事です!
詰り、仮引数「TypeArray* pa,」で示した4×4サイズの
画像をテンプレートとして仮引数「TypeArray* pb,」で
現わされる大きな(広い)画像から一致する4×4サイズの
画像をサーチする≪仮引数「double *buf,」に一致率を格納
する事で何処が一致して居るか分かる様に成る≫を行う関数
です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-8)関数「void GetHVSearchCorrImage44(
TypeArray* pa,TypeArray* pb,
int nStepH,int nStepV,int &resH,int &resV);」
void GetHVSearchCorrImage44( // 4×4画素画像サーチ用升目個数取得
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「SearchCorrImage44」は、直前に説明した
関数「void SearchCorrImage44()」の事です!
この「GetHVSearchCorrImage44()」は、補助的に
関数「void SearchCorrImage44()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void SearchCorrImage44()」の
仮引数「double *buf,」のバッファサイズを
取得する為のサイズとします!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-9)関数「double AverageImage44XY(
TypeArray* pa,int x,int y);」
double AverageImage44XY( // 4×4画素平均:画像単位:個別座標指定
TypeArray* pa, // A配列
int x, // X座標オフセット
int y ); // Y座標オフセット
void AverageImage44XY( // 4×4画素平均:画像単位:座標指定
「Average」は、勿論英単語で「平均値」を意味します!
「Image44」で画像のサイズが4×4を意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「int x,int y」で座標変位を指定した4×4サイズの
画像の画素の平均値を算出して座標の値としてdouble 型で
関数値として返す関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で複数の結果をバッファーに格納する形式の関数
も存在しますが、☆説明☆し易い為にワザワザ作成したと思
える関数です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-10)関数「void AverageImage44XY(
TypeArray* pa,TypeXY *xy,BYTE *buf,
int size,int offX=0,int offY=0);」
void AverageImage44XY( // 4×4画素平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
BYTE* buf, // 結果バッファー:BYTE
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「Average」は、勿論英単語で「平均値」を意味します!
「Image44」で画像のサイズが4×4を意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
4×4サイズの画像の画素の平均値を算出して
仮引数「BYTE *buf,」座標の値としてBYTE型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で結果バッファーの型が異なる関数も存在しま
す!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-11)関数「void AverageImage44XY(
TypeArray* pa,TypeXY *xy,double *buf,
int size,int offX=0,int offY=0);」
void AverageImage44XY( // 4×4画素平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー:倍精度
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「Average」は、勿論英単語で「平均値」を意味します!
「Image44」で画像のサイズが4×4を意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
4×4サイズの画像の画素の平均値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で結果バッファーの型が異なる関数も存在しま
す!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-12)関数「double CorrImage44XY(
TypeArray* pa,TypeArray* pb,
int x,int y);」
double CorrImage44XY( // 4×4画素正規化相関:画像単位:個別座標指定
TypeArray* pa, // A配列
TypeArray* pb, // B配列
int x, // X座標オフセット
int y ); // Y座標オフセット
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「44」は、4×4=縦(X座標方向:水平方向)が4画素×
横(Y座標方向:垂直方向)が4画素と言う基本的な相関を
計算する画像サイズを意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,TypeArray* pb,」で
示される画像相互の相関値を算出して
仮引数「int x,int y」で座標変位を指定した4×4サイズ
の画像の相関値を算出してdouble 型で関数値として返す
関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で複数の結果をバッファーに格納する形式の関数
も存在しますが、
☆説明☆し易い為にワザワザ作成したと思える関数です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-13)関数「void CorrImage44XY(
TypeArray* pa,TypeArray* pb,
TypeXY *xy,double *buf,
int size,int offX=0,int offY=0);」
void CorrImage44XY( // 4×4画素正規化相関:画像単位:座標指定
TypeArray* pa, // A配列
TypeArray* pb, // B配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「44」は、4×4=縦(X座標方向:水平方向)が4画素×
横(Y座標方向:垂直方向)が4画素と言う基本的な相関を
計算する画像サイズを意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,TypeArray* pb,」で示される画像
の中で
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
4×4サイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で一か所の値を返す関数も存在します!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-14)関数「double CorrImage44MyselfXY(
TypeArray* pa,int x,int y);」
double CorrImage44MyselfXY( // 4×4画素自己相関:画像単位:個別座標指定
TypeArray* pa, // A配列
int x, // X座標オフセット
int y ); // Y座標オフセット
「CorrImage44」は、関数「void CorrImage44()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「int x,int y」で座標変位を指定した4×4サイズの
画像の画素の自己相関を算出してdouble 型で関数値として
返す関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で複数の結果をバッファーに格納する形式の関数
も存在しますが、☆説明☆し易い為にワザワザ作成したと思
える関数です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-15)関数「
void CorrImage44MyselfXY(
TypeArray* pa,TypeXY *xy,double *buf,
int size,int offX=0,int offY=0);」
void CorrImage44MyselfXY( // 4×4画素自己相関:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImage44」は、関数「void CorrImage44()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
4×4サイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で一か所の値を返す関数も存在します!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-16)関数「void CorrImage44MyselfXY(
TypeArray* pa,TypeXY *xy,
double *buf,BYTE *bufAve,
int size,int offX=0,int offY=0);」
void CorrImage44MyselfXY( // 4×4画素自己相関+平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー
BYTE* bufAve, // 結果バッファー:平均値
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImage44」は、関数「void CorrImage44()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
4×4サイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!そして特徴として
仮引数「BYTE *bufAve,」に自己相関算出時に算出される
平均値を副産物として格納出来る関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納しないとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。☆注意☆平均値有り無しを名前で判別するのは
多重定義記述を知ってから面倒くさいと考えたから?!多重
定義を使用しましたので読解する時・使用する時には細かい
引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-17)関数「void CorrImage44MyselfXY(
TypeArray* pa,TypeXY *xy,int *buf,
int size,int offX=0,int offY=0);」
void CorrImage44MyselfXY( // 4×4画素自己相関:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
int* buf, // 結果バッファー:整数
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImage44」は、関数「void CorrImage44()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
4×4サイズの画像の画素の相関値を算出して
仮引数「int *buf,」座標の値としてint型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で平均値も副産物として格納するとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。
☆注意☆平均値有り無しを名前で判別するのは多重定義記述
を知ってから面倒くさいと考えたから?!
多重定義を使用しましたので読解する時・使用する時には
細かい引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-18)関数「void CorrImage44MyselfXY(
TypeArray* pa,TypeXY *xy,
int *buf,BYTE *bufAve,
int size,int offX=0,int offY=0);」
void CorrImage44MyselfXY( // 4×4画素自己相関+平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
int* buf, // 結果バッファー:整数
BYTE* bufAve, // 結果バッファー:平均値
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImage44」は、関数「void CorrImage44()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
4×4サイズの画像の画素の相関値を算出して
仮引数「int *buf,」座標の値としてint型の結果
バッファーで結果を格納する関数です!そして特徴として
仮引数「BYTE *bufAve,」に自己相関算出時に算出される
平均値を副産物として格納出来る関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納しないとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。☆注意☆平均値有り無しを名前で判別するのは
多重定義記述を知ってから面倒くさいと考えたから?!多重
定義を使用しましたので読解する時・使用する時には細かい
引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-19)関数「int CorrImage44MyselfExtend(
TypeArray* image,TypeXY *bufXY,double *buf,
int maxN,int nStepH,int nStepV,
double tA,double tB);」
int CorrImage44MyselfExtend( // 4×4画素自己相関:拡張
TypeArray* image, // 画像
TypeXY* bufXY, // 結果座標バッファー
double* buf, // 結果バッファー
int maxN, // 最大結果数
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
double tA, // 最小概要しきい値
double tB ); // 最大概要しきい値
「CorrImage44」は、関数「void CorrImage44()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
「Extend」は、勿論、英単語「Extend」拡張を意味します!
詰り、「自己相関」を算出する関数の拡張です!
詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
4×4サイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!そして特徴として
仮引数「double tA,double tB」に概要の相関算出される
閾値の範囲内で詳細に算出して結果を格納する関数です!
★詳細★は、後で説明:【ファイル「CopyClear430.cpp」が
対象】します!
(4-9-20)関数「void CorrImage88(
TypeArray* pa,TypeArray* pb,double* buf,
int nStepH,int nStepV,
int &resH,int &resV);」
void CorrImage88( // 8×8画素正規化相関:画像単位
TypeArray* pa, // A配列
TypeArray* pb, // B配列
double* buf, // 結果バッファー
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「88」は、8×8=縦(X座標方向:水平方向)が8画素×
横(Y座標方向:垂直方向)が8画素と言う基本的な相関を
計算する画像サイズを意味します!
相関値を算出し比較する画像は、
仮引数「TypeArray* pa,」と仮引数「TypeArray* pb,」
で示される画素単位「w=1」画像専用です!★注意★専用に
出来て居るので画素単位「w≠1」の場合は想定外の動きと成
る事に気を付けて下さい!但し、誤解の無い様に仮引数の
画像サイズは、8×8と勘違いシナイ様に、モット大きな
画像を8×8升を仮引数「int nStepH,int nStepV,」と
ステップ(間隔)を開けて比較する事で画像全体を比較≪
相関値を仮引数「double *buf,」に算出後格納≫する関数
です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-21)関数「void GetHVCorrImage88(
TypeArray* pa,TypeArray* pb,
int nStepH,int nStepV,int &resH,int &resV);」
void GetHVCorrImage88( // 8×8画素正規化相関用升目個数取得
TypeArray* pa, // A配列
TypeArray* pb, // B配列
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「CorrImage88」は、直前に説明した
関数「CorrImage88()」の事です!
この「GetHVCorrImage88()」は、補助的に
関数「void CorrImage88()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void CorrImage88()」の
仮引数「double *buf,」のバッファサイズを
取得する為のサイズとします!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-22)関数「void AverageImage88(
TypeArray* pa,BYTE *buf,
int nStepH,int nStepV,int &resH,int &resV);」
void AverageImage88( // 8×8画素平均:画像単位
TypeArray* pa, // A配列
BYTE* buf, // 結果バッファー:BYTE
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Average」は、勿論英単語で「平均値」を意味します!
「Image88」で画像のサイズが8×8を意味します!
詰り、関数「void CorrImage88()」を計算する元に成る平均
値の作成用の平均値が仮引数「BYTE *buf,」に算出して
格納する関数です!勿論、バッファの型が「double *型」の
関数とのオーバーロード(多重定義)関数です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-23)関数「void AverageImage88(
TypeArray* pa,double *buf,
int nStepH,int nStepV,int &resH,int &resV);」
void AverageImage88( // 8×8画素平均:画像単位
TypeArray* pa, // A配列
double* buf, // 結果バッファー:倍精度
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Average」は、勿論英単語で「平均値」を意味します!
「Image88」で画像のサイズが8×8を意味します!
詰り、関数「void CorrImage88()」を計算する元に成る平均
値の作成用の平均値が仮引数「double *buf,」に算出して
格納する関数です!勿論、バッファの型が「double *型」の
関数とのオーバーロード(多重定義)関数です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-24)関数「void CorrImage88Myself(
TypeArray* pa,int *buf,
int nStepH,int nStepV,int &resH,int &resV);」
void CorrImage88Myself( // 8×8画素自己相関:画像単位
TypeArray* pa, // A配列
int* buf, // 結果バッファー
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「CorrImage88」は、関数「void CorrImage88()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
詰り、関数「void CorrImage88()」を計算する元に成る
自己相関値の作成用の相関値が仮引数「int *buf,」に算出
して格納する関数です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-25)関数「void GetHVCorrImage88Myself(
TypeArray* pa,int nStepH,int nStepV,
int &resH,int &resV);」
void GetHVCorrImage88Myself( // 8×8画素自己相関用升目個数取得
TypeArray* pa, // A配列
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!「CorrImage88」は、関数「void CorrImage88()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
この「GetHVCorrImage88Myself()」は、補助的に
関数「void CorrImage88Myself()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void CorrImage88Myself()」の
仮引数「int *buf,」のバッファサイズを
取得する為のサイズとします!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-26)関数「void SearchCorrImage88(
TypeArray* pa,TypeArray* pb,double buf,
int nStepH,int nStepV,int &resH,int &resV);」
void SearchCorrImage88( // 8×8画素画像サーチ
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
double* buf, // 結果バッファー
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Search」は、英単語「Search」で意味「探す」です!
「CorrImage88」は、前に説明した
関数「void CorrImage88()」の事です!
詰り、仮引数「TypeArray pa,」で示した8×8サイズの
画像をテンプレートとして仮引数「TypeArray* pb,」で
現わされる大きな(広い)画像から一致する8×8サイズの
画像をサーチする≪仮引数「double *buf,」に一致率を格納
する事で何処が一致して居るか分かる様に成る≫を行う関数
です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-27)関数「void GetHVSearchCorrImage88(
TypeArray* pa,TypeArray* pb,
int nStepH,int nStepV,int &resH,int &resV);」
void GetHVSearchCorrImage88( // 8×8画素画像サーチ用升目個数取得
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「SearchCorrImage88」は、直前に説明した
関数「void SearchCorrImage88()」の事です!
この「GetHVSearchCorrImage88()」は、補助的に
関数「void SearchCorrImage88()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void SearchCorrImage88()」の
仮引数「double *buf,」のバッファサイズを
取得する為のサイズとします!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-28)関数「void ReductImage88Ave(
TypeArray* ps,TypeArray* pd);」
void ReductImage88Ave( // 画像変換:8×8画素正規化相関用画像圧縮:平均
TypeArray* ps, // S配列
TypeArray* pd ); // D配列
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImage88」で
仮引数「TypeArray* ps,」と元画像の16×16サイズ
升画像を仮引数「TypeArray* pd,」と結果画像の
8×8サイズ升画像作成する処理を行います!
「Ave」は、英単語「Average」の省略形で圧縮方法が、
元画像の平均値を結果画像にする事を意味します!
元画像の4画素≪左上・右上・左下・右下≫の平均値です!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-29)関数「void ReductImage88Min(
TypeArray* ps,TypeArray* pd);」
void ReductImage88Min( // 画像変換:8×8画素正規化相関用画像圧縮:最小
TypeArray* ps, // S配列
TypeArray* pd ); // D配列
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImage88」で
仮引数「TypeArray* ps,」と元画像の16×16サイズ
升画像を仮引数「TypeArray* pd,」と結果画像の
8×8サイズ升画像作成する処理を行います!
「Min」は、英単語「minimum」の省略形で圧縮方法が、
元画像の最小値を結果画像にする事を意味します!
元画像の4画素≪左上・右上・左下・右下≫の最小値です!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-30)関数「void ReductImage88Max(
TypeArray* ps,TypeArray* pd);」
void ReductImage88Max( // 画像変換:8×8画素正規化相関用画像圧縮:最大
TypeArray* ps, // S配列
TypeArray* pd ); // D配列
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImage88」で
仮引数「TypeArray* ps,」と元画像の16×16サイズ
升画像を仮引数「TypeArray* pd,」と結果画像の
8×8サイズ升画像作成する処理を行います!
「Max」は、英単語「Maximum」の省略形で圧縮方法が、
元画像の最大値を結果画像にする事を意味します!
元画像の4画素≪左上・右上・左下・右下≫の最大値です!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-31)関数「void ReductImage88Two(
TypeArray* ps,TypeArray* pd);」
void ReductImage88Two( // 画像変換:8×8画素正規化相関用画像圧縮:2番
TypeArray* ps, // S配列
TypeArray* pd ); // D配列
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImage88」で
仮引数「TypeArray* ps,」と元画像の16×16サイズ
升画像を仮引数「TypeArray* pd,」と結果画像の
8×8サイズ升画像作成する処理を行います!
「Two」は、英単語「Two」2の意味で圧縮方法が、
元画像の小さい方から2番目の値を結果画像にする事を意味
します!元画像の4画素≪左上・右上・左下・右下≫の2番
目です!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-32)関数「void ReductImage88Three(
TypeArray* ps,TypeArray* pd);」
void ReductImage88Three( // 画像変換:8×8画素正規化相関用画像圧縮:3番
TypeArray* ps, // S配列
TypeArray* pd ); // D配列
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImage88」で
仮引数「TypeArray* ps,」と元画像の16×16サイズ
升画像を仮引数「TypeArray* pd,」と結果画像の
8×8サイズ升画像作成する処理を行います!
「Three」は、英単語「Three」3の意味で圧縮方法が、
元画像の小さい方から3番目の値を結果画像にする事を意味
します!元画像の4画素≪左上・右上・左下・右下≫の
3番目です!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-33)関数「void ReductImage88Skip(
TypeArray* ps,TypeArray* pd);」
void ReductImage88Skip( // 画像変換:8×8画素正規化相関用画像圧縮:間引き
TypeArray* ps, // S配列
TypeArray* pd ); // D配列
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImage88」で
仮引数「TypeArray* ps,」と元画像の16×16サイズ
升画像を仮引数「TypeArray* pd,」と結果画像の
8×8サイズ升画像作成する処理を行います!
「Skip」は、スキップで間引く意味で圧縮方法が、
4画素≪左上・右上・左下・右下≫の「左上」の値を結果
画像にする事を意味します!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-34)関数「void GetHVReductImage88(
TypeArray* ps,TypeArray* pd,
int &resH,int &resV);」
void GetHVReductImage88( // 8×8画素正規化相関用画像圧縮用升目個数取得
TypeArray* ps, // 元配列配列
TypeArray* pd, // 圧縮後配列配列
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「ReductImage」は、直前に説明した画像を圧縮するとの
意味で使用しました!
この関数は、結果の8×8サイズ升画像作成が何個作成
出来たかを水平(X座標)側・垂直(Y座標)側の個数を
仮引数「int &resH,int &resV」で返す関数です!
☆目的☆ピラミッド圧縮手法と言う速度向上手段関連
です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-35)関数「void VectorCorrImage88(
TypeArray* pa,TypeArray* pb,
double *bufVecX,double *bufVecY,
int nOffsetH,int nOffsetV,int nStepH,int nStepV,
int &resH,int &resV);」
void VectorCorrImage88( // 8×8画素画像動線ベクトル算出
TypeArray* pa, // A配列
TypeArray* pb, // B配列
double* bufVecX, // X方向結果バッファー
double* bufVecY, // Y方向結果バッファー
int nOffsetH, // 水平方向オフセット(左右ずれ)
int nOffsetV, // 垂直方向オフセット(上下ずれ)
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Vector」は、英単語「Vector」で、カタカナ語として「
ベクター・ベクトル」で主に「点の座標とそれを結ぶ線」を
意味します!★注意★普通ベクターは「向き(角度)と長さ
」で表現しますが、この画像処理ライブラリでは、後の処置
を考えて「直交座標系(XY座標系)」の変位で表す為に
仮引数「double *bufVecX,double bufVecY,」に結果を格納
します!★注意★更に、「double 」型でX座標・
Y座標と分けて格納し、構造体「TypeXYD」を使用した方が
相応しいのでは無いかと思われる受講者様も居ると思います
が、実験的に作成した物をソノママ使用しているからです!
後で構造体「TypeXYD」を使用した方が良いとは思ったので
すが変更点(関連する関数全てを変更する必要が有る)も
多いので諦めました!
「CorrImage88」は、前に説明した
関数「void CorrImage88()」の事です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-36)関数「void GetHVVectorCorrImage88(
TypeArray* pa,TypeArray* pb,
int nOffsetH,int nOffsetV,int nStepH,int nStepV,
int &resH,int &resV);」
void GetHVVectorCorrImage88( // 8×8画素画像動線ベクトル算出用升目個数取得
TypeArray* pa, // A配列
TypeArray* pb, // B配列
int nOffsetH, // 水平方向オフセット(左右ずれ)
int nOffsetV, // 垂直方向オフセット(上下ずれ)
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「VectorCorrImage88」は、直前に説明した画像ベクターの
算出の意味で使用しました!関数「VectorCorrImage88()」
仮引数「double *bufVecX,double *bufVecY,」に結果を格納
する為のサイズを事前に取得する関数です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-37)関数「double AverageImage88XY(
TypeArray* pa,int x,int y);」
double AverageImage88XY( // 8×8画素平均:画像単位:個別座標指定
TypeArray* pa, // A配列
int x, // X座標オフセット
int y ); // Y座標オフセット
「Average」は、勿論英単語で「平均値」を意味します!
「Image88」で画像のサイズが8×8を意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像の中で
仮引数「int x,int y」の場所の8×8サイズ画像枠の
平均値を作成し、関数の値として「double 」型で
返します!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で複数の結果をバッファーに格納する形式の関数
も存在しますが、☆説明☆し易い為にワザワザ作成したと思
える関数です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-38)関数「void AverageImage88XY(
TypeArray* pa,TypeXY *xy,BYTE *buf,
int size,int offX=0,int offY=0);」
void AverageImage88XY( // 8×8画素平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
BYTE* buf, // 結果バッファー:BYTE
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「Average」は、勿論英単語で「平均値」を意味します!
「Image88」で画像のサイズが8×8を意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
8×8サイズの画像の画素の平均値を算出して
仮引数「BYTE *buf,」座標の値としてBYTE型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で結果バッファーの型が異なる関数も存在しま
す!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-44)関数「void AverageImage88XY(
TypeArray* pa,TypeXY *xy,double *buf,
int size,int offX=0,int offY=0);」
void AverageImage88XY( // 8×8画素平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー:倍精度
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「Average」は、勿論英単語で「平均値」を意味します!
「Image88」で画像のサイズが8×8を意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
8×8サイズの画像の画素の平均値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で結果バッファーの型が異なる関数も存在しま
す!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-40)関数「double CorrImage88XY(
TypeArray* pa,TypeArray* pb,int x,int y);」
double CorrImage88XY( // 8×8画素正規化相関:画像単位:個別座標指定
TypeArray* pa, // A配列
TypeArray* pb, // B配列
int x, // X座標オフセット
int y ); // Y座標オフセット
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「88」は、8×8=縦(X座標方向:水平方向)が8画素×
横(Y座標方向:垂直方向)が8画素と言う基本的な相関を
計算する画像サイズを意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,TypeArray* pb,」で
示される画像相互の相関値を算出して
仮引数「int x,int y」で座標変位を指定した8×8サイズ
の画像の相関値を算出してdouble 型で関数値として返す
関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で複数の結果をバッファーに格納する形式の関数
も存在しますが、☆説明☆し易い為にワザワザ作成したと思
える関数です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-41)関数「void CorrImage88XY(
TypeArray* pa,TypeArray* pb,
TypeXY *xy,double *buf,
int size,int offX=0,int offY=0);」
void CorrImage88XY( // 8×8画素正規化相関:画像単位:座標指定
TypeArray* pa, // A配列
TypeArray* pb, // B配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「88」は、8×8=縦(X座標方向:水平方向)が8画素×
横(Y座標方向:垂直方向)が8画素と言う基本的な相関を
計算する画像サイズを意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,TypeArray* pb,」で示される画像
の中で
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
8×8サイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で一か所の値を返す関数も存在します!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-42)関数「double CorrImage88MyselfXY(
TypeArray* pa,int x,int y);」
double CorrImage88MyselfXY( // 8×8画素自己相関:画像単位:個別座標指定
TypeArray* pa, // A配列
int x, // X座標オフセット
int y ); // Y座標オフセット
「CorrImage88」は、関数「void CorrImage88()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「int x,int y」で座標変位を指定した8×8サイズ
の画像の画素の自己相関を算出してdouble 型で関数値と
して返す関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で複数の結果をバッファーに格納する形式の関数
も存在しますが、☆説明☆し易い為にワザワザ作成したと思
える関数です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-43)関数「void CorrImage88MyselfXY(
TypeArray* pa,TypeXY *xy,double *buf,
int size,int offX=0,int offY=0);」
void CorrImage88MyselfXY( // 8×8画素自己相関:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImage88」は、関数「void CorrImage88()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
8×8サイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納するとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。☆注意☆平均値有り無しを名前で判別するのは
多重定義記述を知ってから面倒くさいと考えたから?!多重
定義を使用しましたので読解する時・使用する時には細かい
引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-44)関数「void CorrImage88MyselfXY(
TypeArray* pa,TypeXY *xy,double *buf,
BYTE *bufAve,
int size,int offX=0,int offY=0);」
void CorrImage88MyselfXY( // 8×8画素自己相関+平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー
BYTE* bufAve, // 結果バッファー:平均値
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImage88」は、関数「void CorrImage88()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
8×8サイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!そして特徴として
仮引数「BYTE *bufAve,」に自己相関算出時に算出される
平均値を副産物として格納出来る関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納しないとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。☆注意☆平均値有り無しを名前で判別するのは
多重定義記述を知ってから面倒くさいと考えたから?!多重
定義を使用しましたので読解する時・使用する時には細かい
引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-45)関数「void CorrImage88MyselfXY(
TypeArray* pa,TypeXY *xy,int *buf,
int size,int offX=0,int offY=0);」
void CorrImage88MyselfXY( // 8×8画素自己相関:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
int* buf, // 結果バッファー:整数
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImage88」は、関数「void CorrImage88()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
8×8サイズの画像の画素の相関値を算出して
仮引数「int *buf,」座標の値としてint型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納するとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。
☆注意☆平均値有り無しを名前で判別するのは多重定義記述
を知ってから面倒くさいと考えたから?!多重定義を使用
しましたので読解する時・使用する時には細かい引数迄、
注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-46)関数「void CorrImage88MyselfXY(
TypeArray* pa,TypeXY *xy,int *buf,
BYTE *bufAve,int size,int offX=0,int offY=0);」
void CorrImage88MyselfXY( // 8×8画素自己相関+平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
int* buf, // 結果バッファー:整数
BYTE* bufAve, // 結果バッファー:平均値
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImage88」は、関数「void CorrImage88()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
8×8サイズの画像の画素の相関値を算出して
仮引数「int *buf,」座標の値としてint型の結果
バッファーで結果を格納する関数です!そして特徴として
仮引数「BYTE *bufAve,」に自己相関算出時に算出される
平均値を副産物として格納出来る関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納しないとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。☆注意☆平均値有り無しを名前で判別するのは
多重定義記述を知ってから面倒くさいと考えたから?!多重
定義を使用しましたので読解する時・使用する時には細かい
引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-47)関数「int CorrImage88MyselfExtend(
TypeArray* image,TypeXY *bufXY,double *buf,
int maxN,int nStepH,int nStepV,
double tA,double tB);」
int CorrImage88MyselfExtend( // 8×8画素自己相関:拡張
TypeArray* image, // 画像
TypeXY* bufXY, // 結果座標バッファー
double* buf, // 結果バッファー
int maxN, // 最大結果数
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
double tA, // 最小概要しきい値
double tB ); // 最大概要しきい値
「CorrImage88」は、関数「void CorrImage88()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
「Extend」は、勿論、英単語「Extend」拡張を意味します!
詰り、「自己相関」を算出する関数の拡張です!
詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
8×8サイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!そして特徴として
仮引数「double tA,double tB」に概要の相関算出される
閾値の範囲内で詳細に算出して結果を格納する関数です!
★詳細★は、後で説明:【ファイル「CopyClear400.cpp」が
対象】します!
(4-9-48)関数「void CorrImageNM(
TypeArray* pa,TypeArray* pb,double *buf,
int n,int m,int nStepH,int nStepV,
int &&resH,int &&resV);」
void CorrImageNM( // n×m画素正規化相関:画像単位
TypeArray* pa, // A配列
TypeArray* pb, // B配列
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「NM」は、N×M=縦(X座標方向:水平方向)が
N画素×横(Y座標方向:垂直方向)がM画素と言う
今までは、基本的なサイズ(4×4・8×8)相関を計算
する関数でししたが、N×Mと任意サイズの升目画像
サイズを扱います!
仮引数「int n,int m,」でN×Mを指定します!
相関値を算出し比較する画像は、
仮引数「TypeArray* pa,」と仮引数「TypeArray* pb,」
で示される画素単位「w=1」画像専用です!★注意★専用に
出来て居るので画素単位「w≠1」の場合は想定外の動きと成
る事に気を付けて下さい!但し、誤解の無い様に仮引数の
画像サイズは、N×Mと勘違いシナイ様に、モット大きな
画像をN×M升を仮引数「int nStepH,int nStepV,」と
ステップ(間隔)を開けて比較する事で画像全体を比較≪
相関値を仮引数「double *buf,」に算出後格納≫する関数
です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-49)関数「void GetHVCorrImageNM(
TypeArray* pa,TypeArray* pb,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void GetHVCorrImageNM( // n×m画素正規化相関用升目個数取得
TypeArray* pa, // A配列
TypeArray* pb, // B配列
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「CorrImageNM」は、直前に説明した
関数「CorrImageNM()」の事です!
この「GetHVCorrImageNM()」は、補助的に
関数「void CorrImageNM()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void CorrImageNM()」の
仮引数「double *buf,」のバッファサイズを
取得する為のサイズとします!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-50)関数「void AverageImageNM(
TypeArray* pa,BYTE *buf,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void AverageImageNM( // n×m画素平均:画像単位
TypeArray* pa, // A配列
BYTE* buf, // 結果バッファー:BYTE
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Average」は、勿論英単語で「平均値」を意味します!
「ImageNM」で画像のサイズがN×Mを意味します!
詰り、関数「void CorrImageNM()」を計算する元に成る平均
値の作成用の平均値が仮引数「BYTE *buf,」に算出して
格納する関数です!勿論、バッファの型が「double *型」の
関数とのオーバーロード(多重定義)関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-51)関数「void AverageImageNM(
TypeArray* pa,double *buf,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void AverageImageNM( // n×m画素平均:画像単位
TypeArray* pa, // A配列
double* buf, // 結果バッファー:倍精度
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Average」は、勿論英単語で「平均値」を意味します!
「ImageNM」で画像のサイズがN×Mを意味します!
詰り、関数「void CorrImageNM()」を計算する元に成る平均
値の作成用の平均値が仮引数「double *buf,」に算出して
格納する関数です!勿論、バッファの型が「BYTE *型」の
関数とのオーバーロード(多重定義)関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-52)関数「void CorrImageNMMyself(
TypeArray* pa,int *buf,
int n,int m,
int nStepH,int nStepV,
int &resH,int &resV);」
void CorrImageNMMyself( // n×m画素自己相関:画像単位
TypeArray* pa, // A配列
int* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「CorrImageNM」は、関数「void CorrImageNM()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-53)関数「void GetHVCorrImageNMMyself(
TypeArray* pa,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void GetHVCorrImageNMMyself( // n×m画素自己相関用升目個数取得
TypeArray* pa, // A配列
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「CorrImageNMMyself」は、直前に説明した
関数「CorrImageNMMyself()」の事です!
この「GetHVCorrImageNMMyself()」は、補助的に
関数「void CorrImageNMMyself()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void CorrImageNMMyself()」の
仮引数「double *buf,」のバッファサイズを
取得する為のサイズとします!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-54)関数「void SearchCorrImageNM(
TypeArray* pa,TypeArray* pb,double *buf,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void SearchCorrImageNM( // n×m画素画像サーチ
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Search」は、英単語「Search」で意味「探す」です!
「CorrImageNM」は、前に説明した
関数「void CorrImageNM()」の事です!
詰り、仮引数「TypeArray* pa,」で示したN×Mサイズの
画像をテンプレートとして仮引数「TypeArray* pb,」で
現わされる大きな(広い)画像から一致するN×Mサイズの
画像をサーチする≪仮引数「double *buf,」に一致率を格納
する事で何処が一致して居るか分かる様に成る≫を行う関数
です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-55)関数「void GetHVSearchCorrImageNM(
TypeArray* pa,TypeArray* pb,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void GetHVSearchCorrImageNM( // n×m画素画像サーチ用升目個数取得
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「SearchCorrImageNM」は、直前に説明した
関数「void SearchCorrImageNM()」の事です!
この「GetHVSearchCorrImageNM()」は、補助的に
関数「void SearchCorrImageNM()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void SearchCorrImageNM()」の
仮引数「double *buf,」のバッファサイズを
取得する為のサイズとします!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-56)関数「int SearchCorrImageSort(
TypeArray* pa,TypeArray* pb,TypeCorr*buf,
int size,int n,int m,int nStepH,int nStepV,
double t,double rate=0.0,
double minAv=0.0,double maxAv=0.0);」
int SearchCorrImageSort( // n×m画素画像サーチ&データ整理
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
TypeCorr* buf, // 結果バッファー(相関値+座標)
int size, // 結果サイズ
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
double t, // 有効相関値
double rate=0.0, // 0.0:無、他:正/反転割合
double minAv=0.0, // 0.0:無、他:平均範囲最小割合
double maxAv=0.0 ); // 0.0:無、他:平均範囲最大割合
「SearchCorrImage」は、前に説明した
関数「void SearchCorrImageNM()」の事です!
「Sort」は、ソーティング詰り、データを整理する事で
この関数では、算出した相関値で
仮引数「TypeCorr*buf,」に一旦、格納されたデータを
降順(大きい方から小さい方へ)並び変えとかで有効な
データを仮引数「double t,double rate,double minAv,
double maxAv=」で示される条件で選択し条件に合致した
データ個数を関数の返値として返す関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-57)関数「int SearchCorrImageXYSort(
TypeArray* pa,TypeArray* pb,TypeCorr*buf,
int size,int n,int m,int nStepH,int nStepV,
double t,double rate=0.0,
double minAv=0.0,double maxAv=0.0);」
int SearchCorrImageXYSort( // n×m画素画像サーチ&データ整理:座標指定
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
TypeCorr* buf, // 結果バッファー(相関値+座標)
int size, // 結果サイズ
int n, // n×mのn
int m, // n×mのm
double t, // 有効相関値
double rate=0.0, // 0.0:無、他:正/反転割合
double minAv=0.0, // 0.0:無、他:平均範囲最小割合
double maxAv=0.0 ); // 0.0:無、他:平均範囲最大割合
「SearchCorrImage」は、前に説明した
関数「void SearchCorrImageNM()」の事です!
「Sort」は、ソーティング詰り、データを整理する事で
この関数では、算出した座標値で
仮引数「TypeCorr*buf,」に一旦、格納されたデータを
降順(大きい方から小さい方へ)並び変えとかで有効な
データを仮引数「double t,double rate,double minAv,
double maxAv=」で示される条件で選択し条件に合致した
データ個数を関数の返値として返す関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-58)関数「void ReductImage(
TypeArray* ps,TypeArray* pd,int mode);」
void ReductImage( // 画像変換:画像圧縮
TypeArray* ps, // S配列
TypeArray* pd, // D配列
int mode ); // モード 0:間引,1:平均,2:最大,3:最小,4:2番,5:3番
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!この関数は、総称で機能を
仮引数「int mode」でモードとして
モード「0:間引,1:平均値,2:最大値,3:最小値,
4:2番目の値,5:3番目の値」と成ります!
そのモードを各サブルーチンに割り振って実行させます!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-59)関数「void ReductImageNMAve(
TypeArray* ps,TypeArray* pd,int n,int m);」
void ReductImageNMAve( // 画像変換:n×m画素正規化相関用画像圧縮:平均
TypeArray* ps, // S配列
TypeArray* pd, // D配列
int n, // n×mのn
int m ); // n×mのm
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImageNM」で
仮引数「TypeArray* ps,」と元画像の(N×2)×
(M×2)サイズ升画像を
仮引数「TypeArray* pd,」と結果画像のN×Mサイズ升画像
として作成する処理を行います!
仮引数「int n,int m,」でN×Mを指定します!
「Ave」は、英単語「Average」の省略形で圧縮方法が、
元画像の平均値を結果画像にする事を意味します!
元画像の4画素≪左上・右上・左下・右下≫の平均値です!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-60)関数「void ReductImageNMMin(
TypeArray* ps,TypeArray* pd,int n,int m);」
void ReductImageNMMin( // 画像変換:n×m画素正規化相関用画像圧縮:最小
TypeArray* ps, // S配列
TypeArray* pd, // D配列
int n, // n×mのn
int m ); // n×mのm
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImageNM」で
仮引数「TypeArray* ps,」と元画像の(N×2)×
(M×2)サイズ升画像を
仮引数「TypeArray* pd,」と結果画像のN×Mサイズ升画像
として作成する処理を行います!
仮引数「int n,int m,」でN×Mを指定します!
「Min」は、英単語「minimum」の省略形で圧縮方法が、
元画像の最小値を結果画像にする事を意味します!
元画像の4画素≪左上・右上・左下・右下≫の最小値です!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-61)関数「void ReductImageNMMax(
TypeArray* ps,TypeArray* pd,int n,int m);」
void ReductImageNMMax( // 画像変換:n×m画素正規化相関用画像圧縮:最大
TypeArray* ps, // S配列
TypeArray* pd, // D配列
int n, // n×mのn
int m ); // n×mのm
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImageNM」で
仮引数「TypeArray* ps,」と元画像の(N×2)×
(M×2)サイズ升画像を
仮引数「TypeArray* pd,」と結果画像のN×Mサイズ升画像
として作成する処理を行います!
仮引数「int n,int m,」でN×Mを指定します!
「Max」は、英単語「Maximum」の省略形で圧縮方法が、
元画像の最大値を結果画像にする事を意味します!
元画像の4画素≪左上・右上・左下・右下≫の最大値です!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-62)関数「void ReductImageNMTwo(
TypeArray* ps,TypeArray* pd,int n,int m);」
void ReductImageNMTwo( // 画像変換:n×m画素正規化相関用画像圧縮:2番
TypeArray* ps, // S配列
TypeArray* pd, // D配列
int n, // n×mのn
int m ); // n×mのm
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImageNM」で
仮引数「TypeArray* ps,」と元画像の(N×2)×
(M×2)サイズ升画像を
仮引数「TypeArray* pd,」と結果画像のN×Mサイズ升画像
として作成する処理を行います!
仮引数「int n,int m,」でN×Mを指定します!
「Two」は、英単語「Two」2の意味で圧縮方法が、
元画像の小さい方から2番目の値を結果画像にする事を意味
します!元画像の4画素≪左上・右上・左下・右下≫の2番
目です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-63)関数「void ReductImageNMThree(
TypeArray* ps,TypeArray* pd,int n,int m);」
void ReductImageNMThree( // 画像変換:n×m画素正規化相関用画像圧縮:3番
TypeArray* ps, // S配列
TypeArray* pd, // D配列
int n, // n×mのn
int m ); // n×mのm
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImageNM」で
仮引数「TypeArray* ps,」と元画像の(N×2)×
(M×2)サイズ升画像を
仮引数「TypeArray* pd,」と結果画像のN×Mサイズ升画像
として作成する処理を行います!
仮引数「int n,int m,」でN×Mを指定します!
「Three」は、英単語「Three」3の意味で圧縮方法が、
元画像の小さい方から3番目の値を結果画像にする事を意味
します!元画像の4画素≪左上・右上・左下・右下≫の3番
目です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-64)関数「void ReductImageNMSkip(
TypeArray* ps,TypeArray* pd,int n,int m);」
void ReductImageNMSkip( // 画像変換:n×m画素正規化相関用画像圧縮:間引き
TypeArray* ps, // S配列
TypeArray* pd, // D配列
int n, // n×mのn
int m ); // n×mのm
「Reduct」は、英単語「Reduce」で「減らす」と動詞、
英単語「reduction」で割引とか削減、ここでは、
「ReductImage」で画像を圧縮するとの意味で使用しまし
た!「ReductImageNM」で
仮引数「TypeArray* ps,」と元画像の(N×2)×
(M×2)サイズ升画像を
仮引数「TypeArray* pd,」と結果画像のN×Mサイズ升画像
として作成する処理を行います!
仮引数「int n,int m,」でN×Mを指定します!
「Skip」は、スキップで間引く意味で圧縮方法が、
4画素≪左上・右上・左下・右下≫の「左上」の値を結果
画像にする事を意味します!
☆目的☆ピラミッド圧縮手法と言う速度向上手段です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-65)関数「void GetHVReductImageNM(
TypeArray* ps,TypeArray* pd,
int n,int m,int &resH,int &resV);」
void GetHVReductImageNM( // n×m画素正規化相関用画像圧縮用升目個数取得
TypeArray* ps, // 元配列配列
TypeArray* pd, // 圧縮後配列配列
int n, // n×mのn
int m, // n×mのm
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「ReductImage」は、直前に説明した画像を圧縮するとの
意味で使用しました!
この関数は、結果のN×Mサイズ升画像作成が何個作成
出来たかを水平(X座標)側・垂直(Y座標)側の個数を
仮引数「int &resH,int &resV」で返す関数です!
仮引数「int n,int m,」でN×Mを指定します!
☆目的☆ピラミッド圧縮手法と言う速度向上手段関連
です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-66)関数「void VectorCorrImageNM(
TypeArray* pa,TypeArray* pb,
double *bufVecX,double *bufVecY,
int n,int m,
int nOffsetH,int nOffsetV,int nStepH,int nStepV,
int &resH,int &resV);」
void VectorCorrImageNM( // n×m画素画像動線ベクトル算出
TypeArray* pa, // A配列
TypeArray* pb, // B配列
double* bufVecX, // X方向結果バッファー
double* bufVecY, // Y方向結果バッファー
int n, // n×mのn
int m, // n×mのm
int nOffsetH, // 水平方向オフセット(左右ずれ)
int nOffsetV, // 垂直方向オフセット(上下ずれ)
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Vector」は、英単語「Vector」で、カタカナ語として「
ベクター・ベクトル」で主に「点の座標とそれを結ぶ線」を
意味します!★注意★普通ベクターは「向き(角度)と長さ
」で表現しますが、この画像処理ライブラリでは、後の処置
を考えて「直交座標系(XY座標系)」の変位で表す為に
仮引数「double *bufVecX,double bufVecY,」に結果を格納
します!
★注意★更に、「double 」型でX座標・Y座標と分けて
格納し、構造体「TypeXY D」を使用した方が相応しいので
は無いかと思われる受講者様も居ると思いますが、実験的に
作成した物をソノママ使用しているからです!
後で構造体「TypeXY D」を使用した方が良いとは思ったの
ですが変更点(関連する関数全てを変更する必要が有る)も
多いので諦めました!
「CorrImageNM」は、前に説明した
関数「void CorrImageNM()」の事です!
仮引数「int n,int m,」でN×Mを指定します!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-67)関数「void GetHVVectorCorrImageNM(
TypeArray* pa,TypeArray* pb,
int n,int m,int nOffsetH,int nOffsetV,
int nStepH,int nStepV,
int &resH,int &resV);」
void GetHVVectorCorrImageNM( // n×m画素画像動線ベクトル算出用升目個数取得
TypeArray* pa, // A配列
TypeArray* pb, // B配列
int n, // n×mのn
int m, // n×mのm
int nOffsetH, // 水平方向オフセット(左右ずれ)
int nOffsetV, // 垂直方向オフセット(上下ずれ)
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「VectorCorrImageNM」は、直前に説明した画像ベクターの
算出の意味で使用しました!関数「VectorCorrImageNM()」
仮引数「double *bufVecX,double *bufVecY,」に結果を格納
する為のサイズを事前に取得する関数です!
仮引数「int n,int m,」でN×Mを指定します!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-68)関数「double AverageImageNMXY(
TypeArray* pa,int n,int m,int x,int y);」
double AverageImageNMXY( // n×m画素平均:画像単位:個別座標指定
TypeArray* pa, // A配列
int n, // n×mのn
int m, // n×mのm
int x, // X座標オフセット
int y ); // Y座標オフセット
「Average」は、勿論英単語で「平均値」を意味します!
「ImageNM」で画像のサイズがN×Mを意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像の中で
仮引数「int x,int y」の場所のN×Mサイズ画像枠の
平均値を作成し、関数の値として「double 」型で
返します!
仮引数「int n,int m,」でN×Mを指定します!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で複数の結果をバッファーに格納する形式の関数
も存在しますが、☆説明☆し易い為にワザワザ作成したと思
える関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-69)関数「void AverageImageNMXY(
TypeArray* pa,TypeXY *xy,BYTE *buf,
int n,int m,int size,int offX=0,int offY=0);」
void AverageImageNMXY( // n×m画素平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
BYTE* buf, // 結果バッファー:BYTE
int n, // n×mのn
int m, // n×mのm
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「Average」は、勿論英単語で「平均値」を意味します!
「ImageNM」で画像のサイズがN×Mを意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
N×Mサイズの画像の画素の平均値を算出して
仮引数「BYTE *buf,」座標の値としてBYTE型の結果
バッファーで結果を格納する関数です!
仮引数「int n,int m,」でN×Mを指定します!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で結果バッファーの型が異なる関数も存在しま
す!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-70)関数「void AverageImageNMXY(
TypeArray* pa,TypeXY *xy,double *buf,
int n,int m,int size,int offX=0,int offY=0);」
void AverageImageNMXY( // n×m画素平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー:倍精度
int n, // n×mのn
int m, // n×mのm
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「Average」は、勿論英単語で「平均値」を意味します!
「ImageNM」で画像のサイズがN×Mを意味します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
N×Mサイズの画像の画素の平均値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
仮引数「int n,int m,」でN×Mを指定します!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で結果バッファーの型が異なる関数も存在しま
す!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-71)関数「double CorrImageNMXY(
TypeArray* pa,TypeArray* pb,int n,int m,
int x,int y);」
double CorrImageNMXY( // n×m画素正規化相関:画像単位:個別座標指定
TypeArray* pa, // A配列
TypeArray* pb, // B配列
int n, // n×mのn
int m, // n×mのm
int x, // X座標オフセット
int y ); // Y座標オフセット
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「NM」は、N×M=縦(X座標方向:水平方向)が
N画素×横(Y座標方向:垂直方向)がM画素と言う相関を
計算する画像サイズを意味します!
仮引数「int n,int m,」でN×Mを指定します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,TypeArray* pb,」で
示される画像相互の相関値を算出して
仮引数「int x,int y」で座標変位を指定したN×Mサイズの
画像の相関値を算出してdouble 型で関数値として返す関数
です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で複数の結果をバッファーに格納する形式の関数
も存在しますが、☆説明☆し易い為にワザワザ作成したと思
える関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-72)関数「void CorrImageNMXY(
TypeArray* pa,TypeArray* pb,
TypeXY *xy,double *buf,
int n,int m,int size,int offX=0,int offY=0);」
void CorrImageNMXY( // n×m画素正規化相関:画像単位:座標指定
TypeArray* pa, // A配列
TypeArray* pb, // B配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「NM」は、N×M=縦(X座標方向:水平方向)が
N画素×横(Y座標方向:垂直方向)がM画素と言う相関を
計算する画像サイズを意味します!
仮引数「int n,int m,」でN×Mを指定します!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,TypeArray* pb,」で示される画像
の中で仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
N×Mサイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で一か所の値を返す関数も存在します!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-73)関数「double CorrImageNMMyselfXY(
TypeArray* pa,int n,int m,int x,int y);」
double CorrImageNMMyselfXY( // n×m画素自己相関:画像単位:個別座標指定
TypeArray* pa, // A配列
int n, // n×mのn
int m, // n×mのm
int x, // X座標オフセット
int y ); // Y座標オフセット
「CorrImageNM」は、関数「void CorrImageNM()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「int x,int y」で座標変位を指定した
N×Mサイズの画像の画素の自己相関を算出してdouble 型
で関数値として返す関数です!
仮引数「int n,int m,」でN×Mを指定します!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で複数の結果をバッファーに格納する形式の関数
も存在しますが、
☆説明☆し易い為にワザワザ作成したと思える関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-74)関数「void CorrImageNMMyselfXY(
TypeArray* pa,TypeXY *xy,double *buf,
int n,int m,int size,int offX=0,int offY=0);」
void CorrImageNMMyselfXY( // n×m画素自己相関:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImageNM」は、関数「void CorrImageNM()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
N×Mサイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
仮引数「int n,int m,」でN×Mを指定します!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納するとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。☆注意☆平均値有り無しを名前で判別するのは
多重定義記述を知ってから面倒くさいと考えたから?!多重
定義を使用しましたので読解する時・使用する時には細かい
引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-75)関数「void CorrImageNMMyselfXY(
TypeArray* pa,TypeXY *xy,
double *buf,BYTE *bufAve,
int n,int m,int size,int offX=0,int offY=0);」
void CorrImageNMMyselfXY( // n×m画素自己相関+平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
double* buf, // 結果バッファー
BYTE* bufAve, // 結果バッファー:平均値
int n, // n×mのn
int m, // n×mのm
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImageNM」は、関数「void CorrImageNM()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
N×Mサイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!
仮引数「int n,int m,」でN×Mを指定します!
そして特徴として
仮引数「BYTE *bufAve,」に自己相関算出時に算出される
平均値を副産物として格納出来る関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納しないとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。☆注意☆平均値有り無しを名前で判別するのは
多重定義記述を知ってから面倒くさいと考えたから?!多重
定義を使用しましたので読解する時・使用する時には細かい
引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-76)関数「void CorrImageNMMyselfXY(
TypeArray* pa,TypeXY *xy,
int *buf,
int n,int m,int size,int offX=0,int offY=0);」
void CorrImageNMMyselfXY( // n×m画素自己相関:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
int* buf, // 結果バッファー:整数
int n, // n×mのn
int m, // n×mのm
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImageNM」は、関数「void CorrImageNM()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
N×Mサイズの画像の画素の相関値を算出して
仮引数「int *buf,」座標の値としてint型の結果
バッファーで結果を格納する関数です!
仮引数「int n,int m,」でN×Mを指定します!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納するとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。☆注意☆平均値有り無しを名前で判別するのは
多重定義記述を知ってから面倒くさいと考えたから?!多重
定義を使用しましたので読解する時・使用する時には細かい
引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-77)関数「void CorrImageNMMyselfXY(
TypeArray* pa,TypeXY *xy,
int *buf,BYTE *bufAve,
int n,int m,int size,int offX=0,int offY=0);」
void CorrImageNMMyselfXY( // n×m画素自己相関+平均:画像単位:座標指定
TypeArray* pa, // A配列
TypeXY* xy, // 探索座標列
int* buf, // 結果バッファー:整数
BYTE* bufAve, // 結果バッファー:平均値
int n, // n×mのn
int m, // n×mのm
int size, // バッファーサイズ
int offX = 0, // X座標オフセット
int offY = 0 ); // Y座標オフセット
「CorrImageNM」は、関数「void CorrImageNM()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
「XY」でXY座標変位を示します!詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
N×Mサイズの画像の画素の相関値を算出して
仮引数「int *buf,」座標の値としてint型の結果
バッファーで結果を格納する関数です!
仮引数「int n,int m,」でN×Mを指定します!
そして特徴として
仮引数「BYTE *bufAve,」に自己相関算出時に算出される
平均値を副産物として格納出来る関数です!
★備考★この関数は、オーバーロード(多重定義)として
同じ関数名で仮引数「BYTE *bufAve,」を格納しないとか、
格納する型が異なる関数も同じ名前で引数の違いだけで用意
しています。☆注意☆平均値有り無しを名前で判別するのは
多重定義記述を知ってから面倒くさいと考えたから?!多重
定義を使用しましたので読解する時・使用する時には細かい
引数迄、注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-78)関数「int CorrImageNMMyselfExtend(
TypeArray* image,TypeXY *bufXY,double *buf,
int nN,int nM,int maxN,int nStepH,int nStepV,
double tA,double tB);」
int CorrImageNMMyselfExtend( // n×m画素自己相関:拡張
TypeArray* image, // 画像
TypeXY* bufXY, // 結果座標バッファー
double* buf, // 結果バッファー
int nN, // n×mのn
int nM, // n×mのm
int maxN, // 最大結果数
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
double tA, // 最小概要しきい値
double tB ); // 最大概要しきい値
「CorrImageNM」は、関数「void CorrImageNM()」で説明し
た通りです!
「Myself」勿論、英単語「Myself」自分自身を意味します!
「Extend」は、勿論、英単語「Extend」拡張を意味します!
詰り、「自己相関」を算出する関数の拡張です!
詰り、
仮引数「TypeArray* pa,」で示される画像から、
仮引数「TypeXY *xy」で構造体型名「TypeXY *」で
座標変位バッファーに格納したXY座標変位を指定した
N×Mサイズの画像の画素の相関値を算出して
仮引数「double *buf,」座標の値としてdouble 型の結果
バッファーで結果を格納する関数です!そして特徴として
仮引数「double tA,double tB」に概要の相関算出される
閾値の範囲内で詳細に算出して結果を格納する関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-79)関数「void CorrImageNMLarge(
TypeArray* pa,TypeArray* pb,
double *buf,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void CorrImageNMLarge( // n×m画素正規化相関:画像単位
TypeArray* pa, // A配列
TypeArray* pb, // B配列
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「NM」は、N×M=縦(X座標方向:水平方向)がN画素×
横(Y座標方向:垂直方向)がM画素と言うN×Mと
任意サイズの升目画像サイズを扱います!
仮引数「int n,int m,」でN×Mを指定します!
相関値を算出し比較する画像は、
仮引数「TypeArray* pa,」と仮引数「TypeArray* pb,」
で示される画素単位「w=1」画像専用です!★注意★専用に
出来て居るので画素単位「w≠1」の場合は想定外の動きと成
る事に気を付けて下さい!但し、誤解の無い様に仮引数の
画像サイズは、N×Mと勘違いシナイ様に、モット大きな
画像をN×M升を仮引数「int nStepH,int nStepV,」と
ステップ(間隔)を開けて比較する事で画像全体を比較≪
相関値を仮引数「double *buf,」に算出後格納≫する関数
です!
「Large」は、英単語「Large」で大きいとか広いを意味
します!ココでは、仮引数「int n,int m,」でN×Mと
枠のサイズ指定していますが、その「nm」=N×Mの値が
数値「65536」を超えたら「Large」として扱います!
★注意★N×Mの値が数値「65536」未満の場合は、途中で
算出される合計値の数が整数型(32ビット)に収まるとし
コノ関数では、内部の演算で倍精度浮動小数点数値で演算す
る為です!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!
(4-9-80)関数「void CorrImageNMLargeMyself(
TypeArray* pa,double *buf,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void CorrImageNMLargeMyself( // n×m画素自己相関:画像単位
TypeArray* pa, // A配列
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「CorrImageNM」は、関数「void CorrImageNM()」で説明し
た通りです!
「Large」は、英単語「Large」で大きいとか広いを意味
します!ココでは、仮引数「int n,int m,」でN×Mと
枠のサイズ指定していますが、その「n*m」=N×Mの値が
数値「65536」を超えたら「Large」として扱います!
★注意★N×Mの値が数値「65536」未満の場合は、途中で
算出される合計値の数が整数型(32ビット)に収まるとし
コノ関数では、内部の演算で倍精度浮動小数点数値で演算す
る為です!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!
(4-9-81)関数「void SearchCorrImageNMLarge(
TypeArray* pa,TypeArray* pb,
double *buf,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void SearchCorrImageNMLarge( // n×m画素画像サーチ
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Search」は、英単語「Search」で意味「探す」です!
「CorrImageNM」は、前に説明した
関数「void CorrImageNM()」の事です!
詰り、仮引数「TypeArray* pa,」で示したN×Mサイズの
画像をテンプレートとして仮引数「TypeArray* pb,」で
現わされる大きな(広い)画像から一致するN×Mサイズの
画像をサーチする≪仮引数「double *buf,」に一致率を格納
する事で何処が一致して居るか分かる様に成る≫を行う関数
です!
「Large」は、英単語「Large」で大きいとか広いを意味
します!ココでは、仮引数「int n,int m,」でN×Mと
枠のサイズ指定していますが、その「nm」=N×Mの値が
数値「65536」を超えたら「Large」として扱います!
★注意★N×Mの値が数値「65536」未満の場合は、途中で
算出される合計値の数が整数型(32ビット)に収まるとし
コノ関数では、内部の演算で倍精度浮動小数点数値で演算す
る為です!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!
(4-9-82)関数「int SearchCorrImageSortLarge(
TypeArray* pa,TypeArray* pb,
TypeCorr*buf,int size,
int n,int m,int nStepH,int nStepV,
double t,double rate=0.0,
double minAv=0.0,double maxAv=0.0);」
int SearchCorrImageSortLarge( // n×m画素画像サーチ&データ整理
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
TypeCorr* buf, // 結果バッファー(相関値+座標)
int size, // 結果サイズ
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
double t, // 有効相関値
double rate=0.0, // 0.0:無、他:正/反転割合
double minAv=0.0, // 0.0:無、他:平均範囲最小割合
double maxAv=0.0 ); // 0.0:無、他:平均範囲最大割合
「SearchCorrImageNM」は、前に説明した
関数「void SearchCorrImageNM()」の事です!
「Sort」は、ソーティング詰り、データを整理する事で
この関数では、算出した相関値で
仮引数「TypeCorr*buf,」に一旦、格納されたデータを
降順(大きい方から小さい方へ)並び変えとかで有効な
データを仮引数「double t,double rate,double minAv,
double maxAv=」で示される条件で選択し条件に合致した
データ個数を関数の返値として返す関数です!
「Large」は、英単語「Large」で大きいとか広いを意味
します!ココでは、仮引数「int n,int m,」でN×Mと
枠のサイズ指定していますが、その「nm」=N×Mの値が
数値「65536」を超えたら「Large」として扱います!
★注意★N×Mの値が数値「65536」未満の場合は、途中で
算出される合計値の数が整数型(32ビット)に収まるとし
コノ関数では、内部の演算で倍精度浮動小数点数値で演算す
る為です!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!
(4-9-83)関数「int SearchCorrImageXYSortLarge(
TypeArray* pa,TypeArray* pb,
TypeCorr*buf,int size,
int n,int m,
double t,double rate=0.0,
double minAv=0.0,double maxAv=0.0);」
int SearchCorrImageXYSortLarge( // n×m画素画像サーチ&データ整理:座標指定
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
TypeCorr* buf, // 結果バッファー(相関値+座標)
int size, // 結果サイズ
int n, // n×mのn
int m, // n×mのm
double t, // 有効相関値
double rate=0.0, // 0.0:無、他:正/反転割合
double minAv=0.0, // 0.0:無、他:平均範囲最小割合
double maxAv=0.0 ); // 0.0:無、他:平均範囲最大割合
「SearchCorrImage」は、前に説明した
関数「void SearchCorrImageNM()」の事です!
「Sort」は、ソーティング詰り、データを整理する事で
この関数では、算出した座標値で
仮引数「TypeCorrbuf,」に一旦、格納されたデータを
降順(大きい方から小さい方へ)並び変えとかで有効な
データを仮引数「double t,double rate,double minAv,
double maxAv=」で示される条件で選択し条件に合致した
データ個数を関数の返値として返す関数です!
「Large」は、英単語「Large」で大きいとか広いを意味
します!ココでは、仮引数「int n,int m,」でN×Mと
枠のサイズ指定していますが、その「nm」=N×Mの値が
数値「65536」を超えたら「Large」として扱います!
★注意★N×Mの値が数値「65536」未満の場合は、途中で
算出される合計値の数が整数型(32ビット)に収まるとし
コノ関数では、内部の演算で倍精度浮動小数点数値で演算す
る為です!
★詳細★は、後で説明:【ファイル「CopyClear420.cpp」が
対象】します!
(4-9-84)関数「void CorrImageNMMask(
TypeArray* pa,TypeArray* pb,TypeArray* pm,
double *buf,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void CorrImageNMMask( // n×m画素正規化相関:画像単位
TypeArray* pa, // A配列
TypeArray* pb, // B配列
TypeArray* pm, // M配列
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「NM」は、N×M=縦(X座標方向:水平方向)がN画素×
横(Y座標方向:垂直方向)がM画素とN×Mと任意サイズ
の升目画像サイズを扱います!
仮引数「int n,int m,」でN×Mを指定します!
「Mask」は、英単語「Masking」マスキング、カタカナ語
でも使用される「隠す・被覆する」と一部を隠す事を意味し
ます!この画像処理では、仮引数「TypeArray* pm,」で
マスク画像メモリを示し、この画像でN×M升目内の
マスキングを行います!
相関値を算出し比較する画像は、
仮引数「TypeArray* pa,」と仮引数「TypeArray* pb,」
で示される画素単位「w=1」画像専用です!★注意★専用に
出来て居るので画素単位「w≠1」の場合は想定外の動きと成
る事に気を付けて下さい!但し、誤解の無い様に仮引数の
画像サイズは、N×Mと勘違いシナイ様に、モット大きな
画像をN×M升を仮引数「int nStepH,int nStepV,」と
ステップ(間隔)を開けて比較する事で画像全体を比較≪
相関値を仮引数「double *buf,」に算出後格納≫する関数
です!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!
(4-9-85)関数「void CorrImageNMMaskMyself(
TypeArray* pa,TypeArray* pm,
double *buf,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void CorrImageNMMaskMyself( // n×m画素自己相関:画像単位
TypeArray* pa, // A配列
TypeArray* pm, // M配列
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「CorrImageNM」は、関数「void CorrImageNM()」で説明し
た通りです!
「Corr」は、相関を意味します!
「Image」は、勿論、画像です!
「NM」は、N×M=縦(X座標方向:水平方向)が
N画素×横(Y座標方向:垂直方向)がM画素とN×Mと
任意サイズの升目画像サイズを扱います!
仮引数「int n,int m,」でN×Mを指定します!
「Mask」は、英単語「Masking」マスキング、カタカナ語
でも使用される「隠す・被覆する」と一部を隠す事を意味し
ます!この画像処理では、仮引数「TypeArray* pm,」で
マスク画像メモリを示し、この画像でN×M升目内の
マスキングを行います!
「Myself」勿論、英単語「Myself」自分自身を意味します!
詰り、「自己相関」を算出する関数です!
相関値を算出し比較する画像は、
仮引数「TypeArray* pa,」で示される画素単位「w=1」画像
専用です!★注意★専用に出来て居るので画素単位「w≠1」
の場合は想定外の動きと成る事に気を付けて下さい!但し、
誤解の無い様に仮引数の画像サイズは、N×Mと勘違い
シナイ様に、モット大きな画像をN×M升を
仮引数「int nStepH,int nStepV,」とステップ(間隔)を
開けて比較する事で画像全体を比較≪相関値を
仮引数「double *buf,」に算出後格納≫する関数です!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!
(4-9-86)関数「
void SearchCorrImageNMMask(
TypeArray* pa,TypeArray* pb,TypeArray* pm,
double *buf,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void SearchCorrImageNMMask( // n×m画素画像サーチ
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
TypeArray* pm, // M配列
double* buf, // 結果バッファー
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「SearchCorrImage」は、前に説明した
関数「void SearchCorrImageNM()」の事です!
「Mask」は、英単語「Masking」マスキング、カタカナ語
でも使用される「隠す・被覆する」と一部を隠す事を意味し
ます!この画像処理では、仮引数「TypeArray* pm,」で
マスク画像メモリを示し、この画像でN×M升目内の
マスキングを行います!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!
(4-9-87)関数「int SearchCorrImageSortMask(
TypeArray* pa,TypeArray* pb,TypeArray* pm,
TypeCorr*buf,int size,
int n,int m,int nStepH,int nStepV,
double t,double rate=0.0,
double minAv=0.0,double maxAv=0.0);」
int SearchCorrImageSortMask( // n×m画素画像サーチ&データ整理
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
TypeArray* pm, // M配列
TypeCorr* buf, // 結果バッファー(相関値+座標)
int size, // 結果サイズ
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
double t, // 有効相関値
double rate=0.0, // 0.0:無、他:正/反転割合
double minAv=0.0, // 0.0:無、他:平均範囲最小割合
double maxAv=0.0 ); // 0.0:無、他:平均範囲最大割合
「SearchCorrImage」は、前に説明した
関数「void SearchCorrImageNM()」の事です!
「Sort」は、ソーティング詰り、データを整理する事で
この関数では、算出した相関値で
仮引数「TypeCorrbuf,」に一旦、格納されたデータを
降順(大きい方から小さい方へ)並び変えとかで有効な
データを仮引数「double t,double rate,double minAv,
double maxAv=」で示される条件で選択し条件に合致した
データ個数を関数の返値として返す関数です!
「Mask」は、英単語「Masking」マスキング、カタカナ語
でも使用される「隠す・被覆する」と一部を隠す事を意味し
ます!この画像処理では、仮引数「TypeArray *pm,」で
マスク画像メモリを示し、この画像でN×M升目内の
マスキングを行います!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!
(4-9-88)関数「int SearchCorrImageXYSortMask(
TypeArray* pa,TypeArray* pb,TypeArray* pm,
TypeCorr*buf,int size,
int n,int m,
double t,double rate=0.0,
double minAv=0.0,double maxAv=0.0);」
int SearchCorrImageXYSortMask( // n×m画素画像サーチ&データ整理:座標指定
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
TypeArray* pm, // M配列
TypeCorr* buf, // 結果バッファー(相関値+座標)
int size, // 結果サイズ
int n, // n×mのn
int m, // n×mのm
double t, // 有効相関値
double rate=0.0, // 0.0:無、他:正/反転割合
double minAv=0.0, // 0.0:無、他:平均範囲最小割合
double maxAv=0.0 ); // 0.0:無、他:平均範囲最大割合
「SearchCorrImage」は、前に説明した
関数「void SearchCorrImageNM()」の事です!
「Sort」は、ソーティング詰り、データを整理する事で
この関数では、算出した座標値で
仮引数「TypeCorrbuf,」に一旦、格納されたデータを
降順(大きい方から小さい方へ)並び変えとかで有効な
データを仮引数「double t,double rate,double minAv,
double maxAv=」で示される条件で選択し条件に合致した
データ個数を関数の返値として返す関数です!
「Mask」は、英単語「Masking」マスキング、カタカナ語
でも使用される「隠す・被覆する」と一部を隠す事を意味し
ます!この画像処理では、仮引数「TypeArray pm,」で
マスク画像メモリを示し、この画像でN×M升目内の
マスキングを行います!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!
(4-9-89)関数「void GetHVCorrImageNMMask(
TypeArray* pa,TypeArray* pb,TypeArray* pm,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void GetHVCorrImageNMMask( // n×m画素正規化相関用升目個数取得
TypeArray* pa, // A配列
TypeArray* pb, // B配列
TypeArray* pm, // M配列
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「CorrImageNM」は、直前に説明した
関数「CorrImageNM()」の事です!
この「GetHVCorrImageNM()」は、補助的に
関数「void CorrImageNM()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void CorrImageNM()」の
仮引数「double buf,」のバッファサイズを
取得する為のサイズとします!
「Mask」は、英単語「Masking」マスキング、カタカナ語
でも使用される「隠す・被覆する」と一部を隠す事を意味し
ます!この画像処理では、仮引数「TypeArray pm,」で
マスク画像メモリを示し、この画像でN×M升目内の
マスキングを関数「SearchCorrImageXYSortMask()」で行い
ます!★注意★引数のチェック用に存在するだけです!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!
(4-9-90)関数「void GetHVCorrImageNMMaskMyself(
TypeArray* pa,TypeArray* pm,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void GetHVCorrImageNMMaskMyself( // n×m画素自己相関用升目個数取得
TypeArray* pa, // A配列
TypeArray* pm, // M配列
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「CorrImageNMMyself」は、直前に説明した
関数「CorrImageNMMyself()」の事です!
この「GetHVCorrImageNMMyself()」は、補助的に
関数「void CorrImageNMMyself()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void CorrImageNMMyself()」の
仮引数「double buf,」のバッファサイズを
取得する為のサイズとします
「Mask」は、英単語「Masking」マスキング、カタカナ語
でも使用される「隠す・被覆する」と一部を隠す事を意味し
ます!この画像処理では、仮引数「TypeArray *pm,」で
マスク画像メモリを示し、この画像でN×M升目内の
マスキングを関数「SearchCorrImageXYSortMask()」で行い
ます!★注意★引数のチェック用に存在するだけです!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!
(4-9-91)関数「void GetHVSearchCorrImageNMMask(
TypeArray* pa,TypeArray* pb,TypeArray* pm,
int n,int m,int nStepH,int nStepV,
int &resH,int &resV);」
void GetHVSearchCorrImageNMMask( // n×m画素画像サーチ用升目個数取得
TypeArray* pa, // A配列:サーチ対象
TypeArray* pb, // B配列:サーチ範囲
TypeArray* pm, // M配列
int n, // n×mのn
int m, // n×mのm
int nStepH, // 水平方向次点ステップ数
int nStepV, // 垂直方向次点ステップ数
int& resH, // 取得する水平個数
int& resV ); // 取得する垂直個数
「Get」は、取得するを意味します!
「HV」は、水平・垂直の幅のサイズを意味します!
「SearchCorrImageNM」は、直前に説明した
関数「void SearchCorrImageNM()」の事です!
この「GetHVSearchCorrImageNM()」は、補助的に
関数「void SearchCorrImageNM()」を実行する前に
仮引数「int &resH,int &resV」に「HV」と水平・垂直の
幅のサイズをこの関数で取得して関数
「void SearchCorrImageNM()」の
仮引数「double buf,」のバッファサイズを
取得する為のサイズとします!
「Mask」は、英単語「Masking」マスキング、カタカナ語
でも使用される「隠す・被覆する」と一部を隠す事を意味し
ます!この画像処理では、仮引数「TypeArray *pm,」で
マスク画像メモリを示し、この画像でN×M升目内の
マスキングを関数「SearchCorrImageXYSortMask()」で行い
ます!★注意★引数のチェック用に存在するだけです!
★詳細★は、後で説明:【ファイル「CopyClear440.cpp」が
対象】します!
(4-9-92)関数「int ExcludeOverlapXY(
TypeCorrbufxy[],int n,
int xDistance=1,int yDistance=1);」
int ExcludeOverlapXY( // 重複座標の排除
TypeCorr bufxy[], // 座標格納ポインタ(サーチ用)
int n, // 座標個数
int xDistance=1, // X方向距離(省略時=1)
int yDistance=1 ); // Y方向距離(省略時=1)
「Exclude」は、英単語「Exclude」で除外するとか排除する
の意味です!
「Overlap」は、英単語「Overlap」でカタカナ語のオーバー
ラップ、「重なり合う・重複する」の意味です!
「XY」でXY座標変位を示します!詰り、
「ExcludeOverlapXY」で画像の中でXY座標が重複する部分
を排除する事を意味します!
排除し整理するデータは、
仮引数「TypeCorr bufxy[]」で座標組型と仮引数「int n,」
とそのデータ個数を示し、関数の結果として排除後の個数を
関数の値として返します!
★注意★操作対象の仮引数「TypeCorrbufxy[]」は、
型が「TypeCorr」ですが、別の型を操作できる同じ名前の
関数をオーバーロード(多重定義)関数として用意していま
す!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-93)関数「int ExcludeOverlapXY(
TypeCorrIX bufxy[],int n,
int xDistance=1,int yDistance=1);」
int ExcludeOverlapXY( // 重複座標の排除
TypeCorrIX bufxy[], // 座標範囲格納ポインタ(サーチ用)
int n, // 座標個数
int xDistance=1, // X方向距離(省略時=1)
int yDistance=1 ); // Y方向距離(省略時=1)
「Exclude」は、英単語「Exclude」で除外するとか排除する
の意味です!
「Overlap」は、英単語「Overlap」でカタカナ語のオーバー
ラップ、「重なり合う・重複する」の意味です!
「XY」でXY座標変位を示します!詰り、
「ExcludeOverlapXY」で画像の中でXY座標が重複する部分
を排除する事を意味します!
排除し整理するデータは、
仮引数「TypeCorrIX bufxy[]」で座標組型と
仮引数「int n,」とそのデータ個数を示し、関数の結果とし
て排除後の個数を関数の値として返します!
★注意★操作対象の仮引数「TypeCorrIX bufxy[]」は、
型が「TypeCorrIX」ですが、別の型を操作できる同じ
名前の関数をオーバーロード(多重定義)関数として用意
しています!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-94)関数「int MakeXYSearchCorr(
TypeCorr buf1,TypeCorr buf2,
int size,int lmt,int z,int offsetX,int offsetY,
int xAdjust=0,int yAdjust=0);」
int MakeXYSearchCorr( // サーチ用座標作成
TypeCorr* buf1, // 元の座標+相関値
TypeCorr* buf2, // 作成する座標+相関値
int size, // 元のサイズ
int lmt, // 作成する座標の最大サイズ
int z, // 拡大率
int offsetX, // オフセット:X方向
int offsetY, // オフセット:Y方向
int xAdjust=0, // X座標補正値
int yAdjust=0 ); // Y座標補正値
「Make」は、英単語「make」で作る、作成する!
「XY」でXY座標変位を示します!
「Search」は、英単語「Search」で意味「探す」です!
「Corr」は、勿論、相関です!という事でココでは、
「MakeXYSearchCorr」は、でサーチ用XY座標作成として
ピラミッド圧縮としての一段縮尺した画像からの座標を
一段戻した画像の座標として作成する関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
(4-9-95)関数「int GetMakeXYSearchCorr(
int size,int offsetX,int offsetY);」
int GetMakeXYSearchCorr( // サーチ用座標作成数算出
int size, // 元のサイズ
int offsetX, // オフセット:X方向
int offsetY ); // オフセット:Y方向
「Get」は、取得するを意味します!
「MakeXYSearchCorr」は、直前の
関数「MakeXYSearchCorr()」の事です!
この関数は、予め座標バッファーに格納する個数を関数の
値として返す関数です!
★詳細★は、後で説明:【ファイル「CopyClear410.cpp」が
対象】します!
★備考★
解説『解説クラスTypeArray』でも記載したが、
noteエディタの変な特性でコピペした文章の半角「*」
が消されたり、空白「 」が消される事が多々あります!
注意して手作業で修正している筈ですが、必ず、code
機能で表示して居る物を正しいとして確認して下さい
ここで一旦、切れが良い「正規化相関関連関数」での
「public」属性の関数紹介が終わったので2月29日分迄の
講義とします!
後、少しだけ正規化相関関連関数関連(「private」属性)
の関数も残って居ますが、其れは後日!!
続きは、「解説クラスCopyClear(6)」に成り
ます!
「(6)」では、「TypeArray型」を画像として各関数で
使用しますが、共通する画像情報の検査部などを担う関数
を紹介して行きます!
引き続き御贔屓して受講して下さい!