Создать маску изображения на основе диапазона значений пикселей - PullRequest
0 голосов
/ 01 июля 2018

Мне нужно замаскировать свое изображение. Все пиксели, имеющие значения, отличные от

R = 170-220 G = 100-150 В = 60-100

должен быть замаскирован как черный.

Это можно сделать, зациклив и найдя значение пикселя, и если оно выходит за пределы диапазона R или G или B, то замените его черным пикселем, ПРОДОЛЖИТЕ СОХРАНИТЬ его первоначальное значение, но оно стоит дорого. Как я могу избежать, если функция цикла. Есть ли встроенная функция в Matlab?

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Вы можете использовать функцию логической индексации Matlab. Он позволяет индексировать массив на основе различных логических операторов (включая логические операторы, основанные на самих значениях элементов массива).

Image = imread('ImageName.extension');
%Read Image

R_Channel = Image(:,:,1);
G_Channel = Image(:,:,2);
B_Channel = Image(:,:,3);
    %Isolate Colour Channels.

    %R=170-220 G=100-150 B=60-100

    %Logical Indexing
R_Channel(R_Channel < 170 | R_Channel > 220)  = 0;   %Black Mask
G_Channel(G_Channel < 100 | G_Channel > 150)  = 0;   %Black Mask
B_Channel(B_Channel < 60  | B_Channel > 100)  = 0;   %Black Mask
    %Apply constraint on each Channel

MaskedImage = cat(3,R_Channel,G_Channel,B_Channel);
    %Merge all Colour channel to get the masked Image
0 голосов
/ 01 июля 2018

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

R = img(:,:,1);
R_Constraint = R >= 170 && R <= 220;
R(R_Constraint) = 1;
R(~R_Constraint) = 0;

Сделайте это для G и B соответственно. Затем, используя поэлементно и получить конечный результат в виде черно-белого изображения.

G = img(:,:,2);
G_Constraint = G >= 100 && G <= 150;
G(G_Constraint) = 1;
G(~G_Constraint) = 0;

B = img(:,:,3);
B_Constraint = B >= 60 && B <= 100;
B(B_Constraint) = 1;
B(~B_Constraint) = 0;

img = R & G & B;
img(img == 1) = 255;
img = uint8(img); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...