matlab - 在 matlab 上创建一个适合使用 viscircle 绘制的圆圈颜色的颜色条
问题描述
我在一个序列的图像上检测到一些对象。ik
对于我保存的每一帧:
IMG(ik,:)={centers, radii, metric, ik};
其中centers
是一个* 2 数组,其中包含我检测到的 n 个圆的 2D 坐标,radii
是值或其各自的半径,metrics
提供有关此检测的“质量”的信息。
我想在一张图像(颜色图是“灰色”)上一次绘制所有这些圆圈,这些圆圈的颜色对应于时间步长(即 的值ik
)。为此,我执行以下操作:
figure(2001)
imagesc(averageIMG)
axis equal
colormap(gray)
hold on
cmap=jet(imgend-imgstart+1);
for ik = 1:length(IMG)
centers = IMG{ik,1};
radii = IMG{ik,2};
viscircles(centers,radii,'Color',cmap(ik,:));
hold on
end
如何绘制与圆圈颜色相对应的颜色条(带有喷射颜色图)作为时间步长的图像ik
?
注意:我需要将用作该图背景的图像的颜色图保持为“灰色”。
谢谢您的帮助!
解决方案
老实说,这很难。您想要的是两个颜色条,我不确定您是要绘制两者还是只绘制其中一个。现在您可以做的是在更改颜色图之前绘制颜色条并获得限制
hcb=colorbar;
Limsgray=hcb.Limits; %I'm doing this because it's the easiest way to get the max value of the image if you don't know it. if do know the max value you don't necessarily have to do this part
然后将“Limsgray”的最大值添加到所有圆圈的值中,并将颜色栏限制的第二个(最大值)设置为“圆圈的最大值+图像的最大值”。
您还必须附加颜色图,以便:
cg=colormap(gray);
cj=jet(imgend-imgstart+1);
cmap=[cg;cj];
然后,您必须添加自定义标签和刻度,您可以使用
hcb.TickLabels=[]; %removes tick labels if there's no text
hcb.Ticks=[]; %removes ticks if there are no numbers, so add your own
您还可以通过在灰色和喷射之间添加像白色这样的颜色来在颜色条之间添加一些间距。如果您只想显示 1,您只需通过调整限制来更改范围,我建议先绘制圆圈然后附加灰色(但这是我的意见)。
如果你觉得它太费力或什么的,你可以试试这个文件,但我认为改变它更容易。 交易所的彩条文件
推荐阅读
- android - android 应用程序如何跟踪,如果以前安装了应用程序?
- amazon-web-services - AWS IoT 证书突然失效
- java - 使 ArrayList 添加线程安全而不使用线程安全集合
- assembly - 非法指令:PRINTN
- android - Espresso 测试无法通过“依赖冲突”构建
- ios - Xcode 倒计时几天,直到圣诞节
- javascript - 用 html 和 javascript 编写画布
- list - 试图了解如何不将元素添加到列表中
- python - tf.metrics.accuracy 返回的第一个值代表什么
- php - PHP 无法使用在 Apache + PHP-fpm 中没有“php”扩展且没有“R”标志的重写规则