创建一个图像(像素)的圆片(不是从中心)和油漆每一片不同的颜色

4视图(30天)
我想创建一个图像的一圈,把圆分成部分(从圆的shell)和给每个部分(片)一种颜色(灰度)。
我有困难如何限制每个片两条直线和圆的有关电弧之间,完成了片。
请参阅附上的照片了解我的意思。(抱歉,这幅画是不是完整的,只是帮助理解问题)
请只红色的切片(忽略蓝色)
非常感谢你的时间和帮助!。
这是我发现的代码创建一个循环:
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
清晰;%擦掉所有现有的变量。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 20;
%创建一个逻辑的形象与指定的一个圆
%直径,中心,和图像的大小。
%首先创建图像。
imageSizeX = 640;
imageSizeY = 480;
[columnsInImage rowsInImage] = meshgrid (1: imageSizeX, 1: imageSizeY);
下创建图像中的圆%。
centerX = 320;
centerY = 240;
半径= 200;
circlePixels = (rowsInImage - centerY) ^ 2
+ (columnsInImage - centerX)。^ 2 < =半径。^ 2;
% circlePixels是一个二维数组“逻辑”。
%,显示它。
%次要情节(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):)];
输入= inpolygon (x (:), y(:),暗礁(:1),暗礁(:,2));
我(他)= iSeg;
显示亮度图像(Im), drawnow
结束
你可能会想修改角分辨率( theta360 ),点沿圆的数量( idx18 )和内部的像素值分配,以及图像分辨率等。
HTH
3评论

登录置评。


darova
darova 2021年8月15日
这里有一个例子使用矩阵
r0 = 100;%半径的一个圆
t = linspace(0, 2 *π,15)+π/ 2;% 15分一圈
(x, y) = pol2cart (t, r0);%笛卡尔15分
(X, Y) = meshgrid (20-r0: r0 + 20);%网的形象
2 = 14;
(T, R) = cart2pol (x (ii)等号左边(ii));% 15段极性
t1 = cart2pol (x (ii)等号左边(ii));%每个细分的角度
我= X * 0 + 1;
i =[1:长度(t1) 1]
气孔导度= t1 (i) < T & T < t1 (i + 1);%选择段
我=我+电导率*;
结束
气孔导度= X。Y ^ 2 +。^ 2 < r0 ^ 2;
我= I *电导率;%为零值外圆
冲浪(我“edgecolor”,“没有”,“facecolor”,的插值函数)
colormap灰色的
视图(0,90)
平等的
3评论

登录置评。

标签

s manbetx 845


释放

R2018a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!