Question
How to apply a Color Thresholder function in Image Batch Processor to get masked RGB Images instead of binary ones? function [BW,maskedRGBImage] = createMask(RGB) %createMask Threshold RGB image using auto-generated code from colorThresholder app. % [BW,MASKEDRGBIMAGE] = createMask(RGB) thresholds image RGB using % auto-generated code from the colorThresholder app. The colorspace and % range for each channel of the colorspace were set within the app. The % segmentation mask is returned in BW, and a composite of the mask and % original RGB images is returned in maskedRGBImage. % Auto-generated by colorThresholder app on 07-Oct-2021 %------------------------------------------------------ % Convert RGB image to chosen color space I = RGB; % Define thresholds for channel 1 based on histogram settings channel1Min = 23.000; channel1Max = 80.000; % Define thresholds for channel 2 based on histogram settings channel2Min = 33.000; channel2Max = 84.000; % Define thresholds for channel 3 based on histogram settings channel3Min = 0.000; channel3Max = 34.000; % Create mask based on chosen histogram thresholds sliderBW = (I(:,:,1) >= channel1Min ) & (I(:,:,1) <= channel1Max) & ... (I(:,:,2) >= channel2Min ) & (I(:,:,2) <= channel2Max) & ... (I(:,:,3) >= channel3Min ) & (I(:,:,3) <= channel3Max); BW = sliderBW; % Initialize output masked image based on input image. maskedRGBImage = RGB; % Set background pixels where BW is false to zero. maskedRGBImage(repmat(~BW,[1 1 3])) = 0; end However, when I apply this function for a batch of images in Image batch processor, I'm only getting the binary masks (the selected objects are white and a black background) as outputs. Can you tell me how to get the objects in my image batch as RGB with black background?
Expert Answer
John Williams
PhD Expert
Answered Aug 26, 2026
You need to call it in a loop over all your images, like
folder = pwd; % Whatever.
filePattern = fullfile(folder, '*.webp');
fileList = dir(filePattern);
for k = 1 : numImages
% Read in original image
thisFileName = fullfile(fileList(k).folder, fileList(k).name);
fprintf('Reading "%s".\n', thisFileName);
rgbImage = imread(thisFileName);
% Do color segmentation.
[mask, maskedRGBImage] = createMask(rgbImage);
% Now display the three images
subplot(2, 2, 1);
imshow(rgbImage)
subplot(2, 2, 2);
imshow(mask);
subplot(2, 2, 3);
imshow(maskedRGBImage);
drawnow;
end
Or if you're using the batch processing app, maybe it's using only the first output. Try reversing the outputs:
function [maskedRGBImage, BW] = createMask(RGB)
100% Run Guarantee
3-Hour Fast-Track Delivery
Need a Custom Version or Complete Simulation for This Problem?
Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.
Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here
Related maskedrgbimage Questions & Solutions
Browse All →
Explore similar technical troubleshooting questions and verified MATLAB solutions:
Ready-to-Run MATLAB & Simulink Projects
Browse All Projects →