【问题标题】:Colouring specific pixels in an image为图像中的特定像素着色
【发布时间】:2013-10-04 07:31:32
【问题描述】:

假设我有一张图片。如何使用MATLAB着色该图像中的某些特定像素?

谢谢。

【问题讨论】:

    标签: matlab colors pixel


    【解决方案1】:

    RGB 像素

    我建议使用 RGB 图像,以便您可以轻松地表示彩色和灰色像素。这是一个在图像上制作两个红色块的示例:

    img = imread('moon.tif');
    imgRGB = repmat(img,[1 1 3]);
    % get a mask of the pixels you want and set an RGB vector to those pixels...
    colorMask = false(size(imgRGB,1),size(imgRGB,2));
    colorMask(251:300,151:200,:) = true; % two discontiguous blocks
    colorMask(50:100,50:100,:) = true;
    redPix = permute([255 0 0],[1 3 2]);
    imgRGB(repmat(colorMask,[1 1 3])) = repmat(redPix, numel(find(colorMask)),1);
    

    AlphaData image 属性

    另一种很酷的方法是使用图像的AlphaData 属性。见this example on a MathWorks blog。这实质上是通过使覆盖彩色图像的灰色图像透明来打开或关闭图像某些部分的颜色。要使用灰色图像,请执行以下操作:

    img = imread('moon.tif');
    influenceImg = abs(randn(size(img)));
    influenceImg = influenceImg / (2*max(influenceImg(:)));
    imshow(img, 'InitialMag', 'fit'); hold on
    green = cat(3, zeros(size(img)), ones(size(img)), zeros(size(img)));
    h = imshow(green); hold off
    set(h, 'AlphaData', influenceImg)
    

    请参阅 MathWorks 链接中的第二个示例。

    【讨论】:

    • 感谢您的回复。我正在使用grayscale 图像。我还能这样做吗?
    • 对于显示的简单红色像素示例,您可以将其repmat 转换为 RGB。对于AlphaData 方法,它通过拍摄彩色图像并在某些地方打开/关闭颜色来操作。但请注意,感兴趣的图像可以是灰色的,而彩色图像可以是纯色的(参见 url 中的第二个示例)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多