画像の特定部分を抽出したいと思います。たとえば、何らかの種類のテンプレートやフレームでインデックスされている部分だけを考えてみましょう。ループのない画像のフレーム/パターンを取得するMATLAB
GRAYPIC = reshape(randperm(169), 13, 13);
FRAME = ones(13);
FRAME(5:9, 5:9) = 0;
FRAME_OF_GRAYPIC = []; % the new pic that only shows the frame extracted
私は、forループを使用してこれを達成することができます
for X = 1:13
for Y = 1:13
vlaue = FRAME(Y, X);
switch vlaue
case 1
FRAME_OF_GRAYPIC(X,Y) = GRAYPIC(X,Y)
case 0
FRAME_OF_GRAYPIC(X,Y) = 0
end
end
end
imshow(mat2gray(FRAME_OF_GRAYPIC));
しかし、それはすなわち、ベクトル演算のいくつかの種類でそれを使用することが可能である:
FRAME_OF_GRAYPIC = GRAYPIC(FRAME==1);
けれども、これは残念ながら働かない。
提案がありますか?コメントのためにあまりにも長い間、あなたの答えを
どうもありがとう、 最高、 クレメンス
'FRAME_OF_GRAYPIC = FRAME * GRAYPIC;' – rahnema1
あなたはほとんどそこにいます。 .. FRAME_OF_GRAYPIC(FRAME == 1)= GRAYPIC(フレーム== 1); '。または、より論理的に(hehe ...)論理的(FRAME)。 FRAME_OF_GRAYPIC(フレーム)= GRAYPIC(フレーム); '。 – beaker
こんにちは、私はいくつかのことを試しました。 Sardar、私は試しました:[r、c] = find(FRAME> 0); FRAME_OF_GRAYPIC(r、c)= GRAYPIC(r、c); しかし、私はそこにはあまり行きません。 rahnema1、このまっすぐ前方提案のためにたくさんありがとう、それはうまく動作しますが、それは1または論理であるインデックスに操作を制限します。ビーカー、私はあなたの提案をテストしますが、それは、13x13の希望ではなく、グレー値を持つ1x169ベクトルになります。これまでのところあなたの助けに感謝します。もう少し明確にするために、私は他の値とも同じように動作させたいと思います。例:FRAME_OF_GRAYPIC(FRAME == 7)= GRAYPIC(フレーム== 7); –