clc;
clear;
imgDir = 'D:\dataset\PASCAL-S\renamed_imgs';
rankDir = 'D:\dataset\PASCAL-S\renamed';
outputDir = 'D:\dataset\PASCAL-S\colored_imgs';
if ~exist(outputDir, 'dir')
mkdir(outputDir)
end
img_list = dir(imgDir);
for i = 3:length(img_list)
img_name = img_list(i).name;
img = imread([imgDir, '\', img_name]);
img_rank = imread([rankDir, '\', strtok(img_name, '.'), '.png']);
instances = unique(img_rank);
instances(instances==0)=[];
rgb = [0, 0, 0];
% if length(instances) > 8
% disp(img_name);
% continue;
% end
if length(instances) == 1
disp(i);
disp(img_name);
continue;
end
for j = 1:length(instances)
bin = dec2bin(j, 3);
for k = 1:length(bin)
rgb(k) = str2num(bin(k));
end
instance_mask = uint8(img_rank == instances(j));
instance_mask(instance_mask==1)=255;
for k = 1:length(rgb)
if rgb(k) == 1
instance_mask2 = instance_mask + img(:,:,k);
img(:,:,k) = instance_mask2;
end
end
end
out_dir = [outputDir, '\', img_name, '.jpg'];
imwrite(img, out_dir);
end