- the circle perimeter alone,
- the part inside the circle, or
- the part outside the circle.
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
How to remove few part of a circle?
3 ビュー (過去 30 日間)
古いコメントを表示
Zara Khan
2019 年 3 月 2 日
I am drawing different radius circles over an image object using simple plot function. How can remove circle portion from background and will only left the portion that is going through image object.
回答 (1 件)
Image Analyst
2019 年 3 月 2 日
You can make a mask and then use it to erase the part of the image you don't want
binaryImage(mask) = false; % Erase in mask
However your wording is so ambiguous, I don't know what the mask should be :
Please explain better or attach a desired output image.
17 件のコメント
Image Analyst
2019 年 3 月 3 日
Assuming when you generate each circle, you have the (x,y) coordinates of it, simply erase them:
for k = 1 : length(x)
col = round(x);
row = round(y);
binaryImage(row, col) = false;
end
Zara Khan
2019 年 3 月 3 日
clc;
close all;
clear;
workspace;
a = imread('img.png');
bwimg =bwareafilt(~a, 1);
s=regionprops(bwimg,'Orientation','Centroid','MajorAxisLength','MinorAxisLength');
circleCenterX =s.Centroid(1);
circleCenterY =s.Centroid(2);
diameter = mean([s.MajorAxisLength s.MinorAxisLength],2);
figure;
imshow(bwimg);
set (gca,'TickLabelInterpreter','none');
set(gca,'fontweight','bold','fontsize',12);
set(gca,'color','black');
get(0,'Factory');
hold on
for n=1:8
r=n*diameter/16;
t=0:0.001:2*pi;
x = circleCenterX + r* sin(t);
y = circleCenterY + r * cos(t);
plot(x,y, 'LineWidth', 2);
for k=1:length(x);
col=round(x);
row=round(y);
bwimg(row,col)=false;
end
end
This is not working .
Image Analyst
2019 年 3 月 14 日
Yes, try this:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;
rgbImage = imread('img.png');
% Get the dimensions of the image.
% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.
[rows, columns, numberOfColorChannels] = size(rgbImage)
if numberOfColorChannels > 1
% It's not really gray scale like we expected - it's color.
% Use weighted sum of ALL channels to create a gray scale image.
% grayImage = rgb2gray(rgbImage);
% ALTERNATE METHOD: Convert it to gray scale by taking only the green channel,
% which in a typical snapshot will be the least noisy channel.
grayImage = rgbImage(:, :, 2); % Take green channel.
else
grayImage = rgbImage; % It's already gray scale.
end
% Now it's definitely gray scale with range of 0 to 255.
% Display the image.
subplot(2, 2, 1);
imshow(grayImage, []);
title('Original Image', 'FontSize', fontSize, 'Interpreter', 'None');
axis('on', 'image');
hp = impixelinfo();
%------------------------------------------------------------------------------
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0, 0.04, 1, 0.96]);
% Get rid of tool bar and pulldown menus that are along top of figure.
% set(gcf, 'Toolbar', 'none', 'Menu', 'none');
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
drawnow;
binaryImage = bwareafilt(~grayImage, 1);
props = regionprops(binaryImage,'Orientation','Centroid','MajorAxisLength','MinorAxisLength');
circleCenterX = props.Centroid(1);
circleCenterY = props.Centroid(2);
% Get the average of the min and max diameter.
diameter = mean([props.MajorAxisLength, props.MinorAxisLength], 2)
% Display the image.
subplot(2, 2, 2);
imshow(binaryImage);
title('Binary Image', 'FontSize', fontSize, 'Interpreter', 'None');
axis('on', 'image');
hp = impixelinfo();
hold on
drawnow;
circumference = 2 * pi * props.MajorAxisLength;
t = linspace(0, 2*pi, 1.5 * circumference);
fprintf('Writing black to the %d points along the circles.', length(t));
for n = 1 : 8
fprintf('Processing circle #%d.\n', n);
r = n * diameter / 16;
x = circleCenterX + r * sin(t);
y = circleCenterY + r * cos(t);
plot(x,y, 'LineWidth', 2);
% Make the binary image black where it is at the circle.
for k=1:length(x)
col=round(x(k));
row=round(y(k));
binaryImage(row,col) = false;
end
end
% Display the final image.
subplot(2, 2, 3);
imshow(binaryImage);
title('Final Image', 'FontSize', fontSize, 'Interpreter', 'None');
axis('on', 'image');
Zara Khan
2019 年 3 月 15 日
Image Analyst:
Thank you for your effort sir. But I have tried to show how will be my desired output by adding the "i.png" where all circle permiters are in black colors. But actually it will be in colors.Only the portion where its getting background will be ommited just like your final image. But here all are perimeters are in black. Is this possible to make them colors?
Image Analyst
2019 年 3 月 15 日
Sure, just change it to an RGB image.
rgbImage(row,col, 1) = redColor;
rgbImage(row,col, 2) = greenColor;
rgbImage(row,col, 3) = blueColor;
Of course you will need to change those values every circle if you want different colors. They should be in the range 0-255.
Image Analyst
2019 年 10 月 24 日
Not sure what you mean. The code above will work for any color, just put in the right values.
Zara Khan
2019 年 10 月 29 日
% Make the binary image black where it is at the circle.
for k=1:length(x)
col=round(x(k));
row=round(y(k));
binaryImage(row,col) = false;
end
end
I want to change this portion .
% Make the binary image black where it is at the circle.
I want to make the binary image to any colour where it is at the circle. I am using colour code but its not working .
After making this I want to chane the image black background to white keeping the image circle portion intact .
Image Analyst
2019 年 10 月 29 日
Binary images are only black or white. You can use an RGB image though:
rgbImage(row,col, 1) = redValue;
rgbImage(row,col, 2) = greenValue;
rgbImage(row,col, 3) = blueValue;
Zara Khan
2019 年 10 月 31 日
for k=1:length(x)
col=round(x(k));
row=round(y(k));
binaryImage(row,col) = false;
How to change the false to any other colour?
Zara Khan
2019 年 11 月 4 日
How can make the black background to white ,keeping circle portion instead ? Changing the black background to white making full image white.
参考
カテゴリ
Help Center および File Exchange で Image Processing Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
アジア太平洋地域
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)