Resmi maske ile boyama
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:
% https://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);

