Açıklama: Maskeyi istenilen renkte resmin üstüne çizme.

Girdi: in -> Resim (renkli veya gri), mask -> maske (in’le aynı en ve boyda, logical tipinde), color -> istenilen renk. (opsiyonel, varsayılan değeri sarı)

Çıktı: out -> Verilen resmin maskenin olduğu yerleri boyanmış hali

Örnekler:

Kenar bulma ve bulunan kenarları kırmızı renk ile boyama.

I = imread('coins.png');
bw = edge(I, 'sobel');
rgb = imageOverlay(I, bw, [1 0 0]);
imshow(rgb)

peaks ile örnek matris oluşturup onu mat2gray ile [0, 1] arasındaki değerlere ölçekleme ve bu değerlerin 7′den büyüklerini boyama.

I = peaks(400);
mask = I > 7;
rgb = imageOverlay(mat2gray(I), mask);
imshow(rgb)

English description: Overlaying a mask onto an image with the given color.

Kaynak kod

function out = imageOverlay(in, mask, color)
% imageOverlay.m: Maskeyi istenilen renkte resmin üstüne çizme.
%
% Girdi: in -> Resim (renkli veya gri)
%        mask -> maske (in'le aynı en ve boyda, logical tipinde)
%        color -> istenilen renk. (opsiyonel, varsayılan değeri sarı)
% Çıktı: out -> Verilen resmin maskenin olduğu yerleri boyanmış hali
%
% Örnekler:
% 
%     % Kenar bulma ve bulunan kenarları kırmızı renk ile boyama.
%     I = imread('coins.png');
%     bw = edge(I, 'sobel');
%     rgb = imageOverlay(I, bw, [1 0 0]);
%     imshow(rgb)
%
%     % peaks ile örnek matris oluşturup onu mat2gray ile [0, 1] arasındaki
%     % değerlere ölçekleme ve bu değerlerin 7'den büyüklerini boyama
%
%     I = peaks(400);
%     mask = I > 7;
%     rgb = imageOverlay(mat2gray(I), mask);
%     imshow(rgb)
 
% Lütfen orijinal kod için:
% http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=
% 10502&objectType=file adresine bakınız.
 
% Renk verilmezse sarı olsun.
DEFAULT_COLOR = [1 1 0];
if nargin < 3
    color = DEFAULT_COLOR;
end
 
% Resim tipleri uint8 olsun.
inUint8 = im2uint8(in);
colorUint8 = im2uint8(color);
 
% Kırmızı, yesşil ve mavi kanalları oluştur.
if ndims(inUint8) == 2
    % Resim gri ise tümü aynı.
    outRed   = inUint8;
    outGreen = inUint8;
    outBlue  = inUint8;
else
    % Resim renkli ise her biri ilgili kanala ait.
    outRed   = inUint8(:,:,1);
    outGreen = inUint8(:,:,2);
    outBlue  = inUint8(:,:,3);
end
 
% Maskedeki yerleri boya.
outRed(mask)   = colorUint8(1);
outGreen(mask) = colorUint8(2);
outBlue(mask)  = colorUint8(3);
 
% Yeni değerlere sahip kırmızı, yeşil ve mavi kanallardan yeni bir resim oluştur.
out = cat(3, outRed, outGreen, outBlue);