MATLAB Answers

円ROIの面にストライプを表示したい

2 views (last 30 days)
Yuto
Yuto on 29 Sep 2021
Answered: Kenta on 3 Oct 2021
drawcircleで円ROIを描画しています。StripeColorでエッジ部分をストライプにできることは確認しているのですが,面部分にストライプを表示することは可能でしょうか?
  1 Comment
Atsushi Ueno
Atsushi Ueno on 29 Sep 2021
drawcircleで描画した円ROI(Circleオブジェクト)にその様な機能はありません(現時点では)
>面部分にストライプを表示することは可能でしょうか?
不可能ではありませんが、自分で開発する必要があります。円ROIの対話的操作に連動しなければならないのでしょうから、images.roi.Circleを継承し、面の描画メソッドにストライプ描画機能を追加しなければなりません。関係するソースが全て開示されていなければ、開発は難しいでしょう。
I = imread('baby.jpg'); figure; imshow(I); % cute baby
h = images.roi.Circle(gca,'Center',[1000 1000],'Radius',500,'StripeColor','g');
matlab.graphics.internal.getForDisplay('h',h,'images.roi.Circle')
Center: [1000 1000] Children: [0×0 GraphicsPlaceholder] Color: [0 0.4470 0.7410] ContextMenu: [1×1 ContextMenu] Deletable: 1 DrawingArea: 'auto' EdgeAlpha: 1 FaceAlpha: 0.2000 FaceSelectable: 1 HandleVisibility: 'on' InteractionsAllowed: 'all' Label: '' LabelAlpha: 1 LabelTextColor: [0 0 0] LabelVisible: 'on' LineWidth: 2.1818 MarkerSize: 5.8182 Parent: [1×1 Axes] Radius: 500 Selected: 0 SelectedColor: 'none' StripeColor: [0 1 0] Tag: '' Type: 'images.roi.circle' UserData: [] Vertices: [1577×2 double] Visible: on

Sign in to comment.

Accepted Answer

Kenta
Kenta on 3 Oct 2021
clear;clc;close all
I = imread('baby.jpg'); figure; imshow(I);
slashed=imread('slashC.png');
slashedSmall=imresize(slashed,[800 800]);
slashedSmall=repmat(slashedSmall,[1 1 3]);
roi = drawpoint;
x=round(roi.Position(1));
y=round(roi.Position(2));
[h,w]=size(slashedSmall,1:2);
I(x:x+h-1,y:y+w-1,:)=I(x:x+h-1,y:y+w-1,:)-slashedSmall;
figure;imshow(I)
こんにちは、@Atsushi Ueno さまのおっしゃるとおり、用意された関数でそれをクリックした場所に埋め込むのは難しいのかもしれませんね。そういうfile exchangeのコードもあるかもしれませんが。
例えばslashの入った画像を用意しておき、無理やり画像に重ね合わせるとそれっぽくなりました。
全く作りこめてないのでこれでは問題が多くありますが気にいっていただければここから改良してそれ用の関数を自作するのも良いかもしれません。

More Answers (0)

Tags

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!