2017-02-07 7 views
0

行列の中に円を描きたい。例えば;ある次元の行列を作成して、ones(200,200)とし、円のxy座標を選択し、選択したピクセルの色を変更してimshow(img)を使用してイメージを表示します。写真のように。出来ますか?Matlabの行列の中に円を描く

enter image description here

OR

私はサークルの機能を使用しては画像をこのplotingコードを変更することはできますか?

radius = 5; 
centerX = 20; 
centerY = 30; 
viscircles([centerX, centerY], radius); 
axis square; 

答えて

1

あなたがxy座標グリッドを作成するmeshgridを使用し、各x/yのペアが円内にあるか否かを確認するために円の方程式を使用することができます。これは単に円の概要をしたい場合、あなたはそれのサイズを小さくしてから出て減算する結果のバイナリマスクに畳み込みを適用することができ、画像

[x,y] = meshgrid(1:200, 1:200); 
isinside = (x - centerX).^2 + (y - centerY).^2 <= radius^2; 

imshow(isinside); 

として表示することができる論理的な結果が得られますあなたは画像処理ツールボックスを持っている場合は、バイナリアウトラインに

outline = bwperim(isinside); 
imshow(outline); 
を得 bwperimを使用することができます唯一のアウトライン

shrunk = ~conv2(double(~isinside), ones(3), 'same'); 
outline = isinside - shrunk; 

imshow(outline) 

を得るためのサークル

enter image description here

更新

あなたは上図の色を変更したい場合は、

isinside = ~isinside; 
outline = ~outline; 

imshow(isinside) 
imshow(outline) 

それとも、カラーマップ

を反転することができますを表示する前に outlineisinsideを反転しますか
imshow(isinside) 
colormap(gca, flipud(gray)) 

enter image description here

+0

バックグランドカラーは黒ですが、私は白と円の境界線の色を黒に変えたい。円の色は 'conv2(double(isinside)、0(3)、 'same');を使って変更できますが、背景色を変更する方法は? – Humty

+0

@Humty。配列を1から引きます。 –

+0

@Suever Thanks buddy made by day。 – Humty