реклама на сайте
подробности

 
 
> MATLAB image/colormap, Как формируется изображение?
BlackOps
сообщение Nov 3 2010, 03:58
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



предположим у меня в Матлабе есть матрица чисел с плавающей запятой G, размером 554 на 564. когда я вызываю функцию image(G), то показывается картинка размером 554 на 564.. так вот вопрос.. каким образом эта функция image формирует цвет формата RGB исходя из значения матрицы G?

посмотрел онлайн хелп файл, там дается уравнение RGB16 = uint16(round(RGB64*65535)); если скажем вместо RGB64 у меня число 0.00072562 из моей матрицы G, то значение RGB16 будет 48..


Но, дело в том что если этим уравнением по всей моей матрице пройтись то я одно значение получу...а не три цвета? немного неясен мне этот момент..

кто знаком хорошо с этим?

Сообщение отредактировал BlackOps - Nov 3 2010, 03:59


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
BlackOps
сообщение Nov 3 2010, 20:29
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Вобщем показали мне демо код который вытаскивает три составляющих цвета из матрицы. только после этого нужно применить формулу RGB8 = uint8(round(RGB64*255)); и получить номер цвета!

Код
% Change the current folder to the folder of this m-file.
if(~isdeployed)
cd(fileparts(which(mfilename)));
end
clc; % Clear command window.
clear; % Delete all variables.
close all; % Close all figure windows except those created by imtool
imtool close all; % Close all figure windows created by imtool.
workspace; % Make sure the workspace panel is showing.
fontSize = 20;

% Make a 554-by-564 double matrix with values in the range of 0-255.
doubleImage = 128 * rand(554, 564);
% Display it.
image(doubleImage);
% Apply a jet colormap
cMap = jet(256);
colormap(cMap);
colorbar;
title('Original color Image', 'FontSize', fontSize);
set(gcf, 'Position', get(0,'Screensize')); % Enlarge figure to full screen

% Ask user to click on a point.
uiwait(msgbox('Click on a point in the image'));
[x,y] = ginput(1);
% Round to the nearest pixel
x = int32(x)
y = int32(y)

% Get the matrix value at that pixel.
grayLevel = doubleImage(y, x)

% Get the color map row for that grayLevel.
cMapIndex = floor(grayLevel) + 1;

% Get the color triplet for that grayLevel.
colorTriplet = cMap(cMapIndex, :)

% Report results.
message = sprintf('The value at (%d, %d) is %.3f.\nThe index in the color map table is %d.\nThe color triplet for that is [%.3f, %.3f, %.3f].',...
x, y, grayLevel, cMapIndex, colorTriplet(1), colorTriplet(2),colorTriplet(3));
uiwait(msgbox(message));


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 04:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016