【问题标题】:Fill same color into different contour in matlab在matlab中将相同的颜色填充到不同的轮廓中
【发布时间】:2014-05-22 09:32:57
【问题描述】:

我有一个对象的两个二进制圆。它们没有连接在一起。我完成了一个圆圈的填充颜色。现在,我想将相同的颜色填充到两个不连接在一起的圆圈中。这是我的代码。但它确实有效。你能帮我编辑吗?

  figure
  [xx yy] = meshgrid(1:384,1:384);
  phi1 = (sqrt(((xx - 190).^2 + (yy - 260).^2 )) - 15);
  phi2 = (sqrt(((xx - 270).^2 + (yy - 200).^2 )) - 20);
  phi= sign(phi1).*sign(phi2);
  phi(phi==-1)=0;
  imshow(phi);
  cont = contourc(phi, [0 0])';
  cont = cont(2 : end, :);
  patch(cont(:, 1), cont(:, 2), 'g', 'EdgeColor', 'w')

【问题讨论】:

  • 我看到您有两个由 phi1 和 phi2 定义的圆圈。那我不太确定你想做什么。你想用相同的颜色填充两个圆圈吗?
  • @ysakamoto 是的,先生。我只尝试制作一个由 phi1 和 phi2 创建的对象,这样它们就不会连接在一起

标签: matlab image-processing contour image-segmentation


【解决方案1】:

这是一个绘制实心圆的小脚本。你可以把它做成一个函数,用hold onhold off画很多圈。

r = 2;
xc = 1;
yc = 1;

st = r/100;

x1 = (-r+xc):st:(r+xc);
y1 = yc+sqrt(r^2-(x1-xc).^2);
x2 = x1(end:-1:1);
y2 = yc-sqrt(r^2-(x2-xc).^2);

x = [x1 x2];
y = [y1 y2];

patch(x,y,'g','FaceColor', 'g');

【讨论】:

    【解决方案2】:

    如果您想使用曲线的隐式定义创建更一般的形状,以下方法也可以:

    [xx, yy] = meshgrid(1:384,1:384);
    
    phi1 = 15^2 < ((xx-190).^2 + (yy-260).^2);
    phi2 = 20^2 < ((xx-270).^2 + (yy-200).^2);
    phi = phi1 .* phi2;
    
    contourf(phi, [0,1]);
    colormap([0,1,0;1,1,1]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-09
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多