Создайте цветную полосу, которая соответствует цвету окружностей, нанесенных с помощью viscircle на matlab - PullRequest
0 голосов
/ 31 мая 2018

Я обнаружил некоторые объекты на изображениях из последовательности.Для каждого кадра ik я сохранил:

    IMG(ik,:)={centers, radii, metric, ik};

, где centers - массив * 2, содержащий 2D координаты n обнаруженных мною окружностей, 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?

Примечание: мне нужно сохранить цветовую карту "серой" для изображения, которое я использую в качестве фона этого графика.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 31 мая 2018

Это сложно, если честно с тобой.То, что вы хотите, это две цветные полосы, я не уверен, хотите ли вы нарисовать обе или только одну из них.Теперь вы можете построить цветную полосу перед изменением цветовой карты и получить пределы

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» ко всем значениям окружностей и установить набор2-е (максимальное) значение пределов цветовой панели до «максимальных значений круга + максимальное значение изображения».
Вам также необходимо добавить цветовую карту так:

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, вы просто измените диапазон, отрегулировав пределы, и я предлагаю сначала нарисовать круги, а затем добавить серый (но это мое мнение).

Если вы чувствуете, что это слишком много усилийили что-то, вы можете попробовать этот файл, но я думаю, что изменить его проще. Файл Colorbar на бирже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...