我该如何在MATLAB中将图像转换为Web安全彩色映射?

3

我想使用MATLAB将图像转换为Web安全颜色。是否有预定义的函数可供使用?如果没有,我的第一步应该是什么?

2个回答

3

Ashish有正确的方法,但是你可能会觉得将所有这些值从网页中提取出来并放入一个可用的地图中很困难。你有几个选项可以创建地图...

其中一个选项是使用函数URLREAD获取页面源代码,并使用函数REGEXP解析出所需的数字(“他刚才建议使用正则表达式解析HTML?”是的,我确实这样做了。我能说什么?我是一个独行侠,多蒂。一个叛逆者。):

mapURL = 'http://en.wikipedia.org/wiki/Web_colors#Web-safe_colors';
urlText = urlread(mapURL);
matchExpr = ['<td style="background: #\w{3};">' ...
             '(?:<u>\*)?(\w{3})(?:\*</u>)?</td>'];
colorID = regexp(urlText,matchExpr,'tokens');
colorID = char([colorID{:}]);
[~,webSafeMap] = ismember(colorID,'0369CF');
webSafeMap = (webSafeMap-1)./5;

然而,我在进行上述操作后意识到生成的网络安全颜色映射值具有良好的规则结构。这意味着你实际上可以忽略上述混乱,并使用函数REPMATKRON自行生成映射。请注意保留HTML标签。
colorValues = (0:0.2:1).';  %'
webSafeMap = [repmat(colorValues,36,1) ...
              kron(colorValues,ones(36,1)) ...
              repmat(kron(colorValues,ones(6,1)),6,1)];

然后你可以使用RGB2INDIND2RGB函数轻松地重新着色RGB图像。例如:

imageRGB = imread('peppers.png');  %# Load a built-in image
imageRGB = ind2rgb(rgb2ind(imageRGB,webSafeMap),webSafeMap);
imshow(imageRGB);

A web-safe version of peppers.png


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接