MATLABメモ-行ごと列ごとの画素値取り出しなど-

仕事でMATLAB使うことがあったので、備忘録として残します。

2次元配列(画像など)に対して、行ごと列ごとの画素値取り出し(変数に格納)は以下方法で可能。

行や列を取り出して変数Xに格納する方法

行列Aがm×nの2次元配列の場合

行の取出し

X = A(i,:) => i行目をXに格納
X = A(i:j,:) => i行目からj行目までをXに格納
X = A(i:k:j,:) => i行目からk行おきにj行目までをXに格納

列の取出し

X = A(:,i) => i列目をXに格納
X = A(:,i:j) => i列目からj列目までをXに格納
X = A(:,i:k:j) => i列目からk列おきにj列目までをXに格納

上記を応用し、2値化画像の行ごとの一致度は以下のように判定可能。

まず、画像の2値化方法は以下のページから確認できる。
https://jp.mathworks.com/help/images/ref/im2bw.html

行列A(1 or 0のみの要素を持った行列)における1行目と2行目の一致度を見る場合

SUM = sum(xor(A(1,:),A(2,:)))
=>1の数が多いほど、一致度が低いとみなせる。

排他的論理和の使い方は以下から確認
https://jp.mathworks.com/help/matlab/ref/xor.html

Sum関数に関しては
X = sum(A(1,:)>0)
とすれば、行列Aの1行目の要素に対して”0以上”の個数を算出できる。

512*512の2値化画像に対して全行の一致度を確認する場合:

SUM(512×1の行列)に一致度が格納される。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です