创建一个带有切片(不是从中心)的图像(像素)圆圈,并为每个切片涂上不同的颜色

5次观看(过去30天)
摩西·法勒
摩西·法勒 2021年8月13日
评论道: 摩西·法勒2021年9月24日12:58
我试图创建一个圆的图像,并将圆分成已知的部分(从圆的外壳开始),并给每个部分(切片)一个不同的颜色(或灰度)。
我有困难如何限制每个切片之间的两条线和相关的圆弧,以完成切片。
请看附件图片,了解我的意思。(对不起,这幅画没有完成-只是为了帮助理解问题)
请只看红色的切片(忽略蓝色的)
非常感谢您的时间和帮助!
这是我发现创建圆圈的代码:
clc;%清除命令窗口。
关闭全部%关闭所有数字(除了IMTool之外。)
清晰;删除所有已存在的变量。
工作空间;%确保显示工作区面板。
格式长g
格式袖珍的
字形大小= 20;
%创建具有指定圆圈的逻辑图像
%直径,中心和图像大小。
%首先创建图像。
imagesizex = 640;
imageSizeY = 480;
[columnsInImage rowsInImage] = meshgrid(1:imageSizeX, 1:imageSizeY);
%next在图像中创建圆圈。
centerX = 320;
centerY = 240;
半径= 200;
circlePixels = (rowsInImage - centtery).^2
+(ColumnSinimage - Centerx)。^ 2 <=半径。^ 2;
% circlePixels是一个2D“逻辑”数组。
%现在显示它。
%次要情节(2,1,1);
imshow (circlePixels);
Colormap([0 0 0; 1 1 1]);
标题('圆的二进制图像'“字形大小”、字形大小);
new_im = im2double (circlePixels);
imshow (new_im);

答案(2)

Bjorn Gustavsson
Bjorn Gustavsson 2021年8月13日
(如果你问我,背景图像看起来很不错......)如果你想找到那些我想的楔形地区 inpolygon. 将是最容易使用的函数。也许是这样的:
theta360 = linspace(0, 1, 3601) * 2 *π;
idx18 = 1:200:3601;
theta18 = theta360 (idx18);
R = 200;
(x, y) = meshgrid (200:200);
我= 0 (401);
Iseg = 1:16,
暗礁= [r0; r_circ (idx18 (iSeg + 2): idx18 (iSeg + 3):)];
Inp = InPolygon(x(:),y(:),Redge(:,1),Redge(:,2));
我(他)= iSeg;
显示亮度图像(Im), drawnow
结束
你可能想修改角度分辨率(在 theta360 ),沿圆的点数( idx18 )和你分配给里面像素的值,以及图像分辨率等。
HTH
3评论

登录评论。


达娃
达娃 2021年8月15日
下面是一个使用矩阵的例子
R0 = 100;圆圈的%半径
t = linspace(0,2 * pi,15)+ pi / 2;在一个圆上% 15点
[x,y] = pol2cart(t,r0);%笛卡尔15分
[x,y] = meshgrid(-20-R0:R0 + 20);%网格的图像
2 = 14;
[t,r] = cart2pol(x-x(ii),y-y(ii));%15个极性段
t1 = cart2pol(x-x(ii),y-y(ii));每段角的百分比
我= X * 0 + 1;
i =[1:长度(t1) 1]
cond = t1(i) < T & T < t1(i+1);%选择区段
I = I + cond* I;
结束
x ^2 + y ^2 < r0^2;
我= I. * COND;%astual export resigs in外圈
冲浪(我“edgecolor”“没有”“facecolor”'interp')
COLOROMAP.灰色的
查看(0,90)
平等的
3评论

登录评论。

标签

s manbetx 845


释放

R2018A

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!