MATLAB: How to randomly assign an effect to image

image processingImage Processing ToolboximreadloopMATLABrandirgb

my code goes something like this:
rgbImage = imread ('bunny.png'); %black text image saying "bunny"
rgbImage2 = imread ('dragon.png'); %black text image saying dragon
theWord = rgbImage;
theWord2 = rgbImage2;
%% block of code to change the color of bunny image (1)
% turn black text image to cyan
theWord(:,:,3)=255;
theWord(:,:,2)=255;
%turn black text to red (2)
theWord(:,:,1)=255;
theWord(:,:,2)=0;
%% repeat for dragon image
theWord2(:,:,3)=255;
theWord2(:,:,2)=255;
theWord2(:,:,1)=255;
theWord2(:,:,1) = 0;
I want to create a loop using randi where when whatever image is presented, it assigns a random (color) effect to it. I should I go about it so that I can use randi?
I am having a hard time since the images I am using are actually a bit more "messy" so because I have to play around with the colors, the actual text block I wrote to change the color is around 5 lines. I just shortened them a bit for simplicity.

Best Answer

Get a mask and then change the colors.
For each image (untested code, attach your images if you need more help).
[r, g, b] = imsplit(rgbImage);
mask = any(rgbImage, 3)
randomColor = floor(255 * rand(1,3));
r(mask) = randomColor(1);
g(mask) = randomColor(2);
b(mask) = randomColor(3);
rgbImage = cat(3, r, b, g);
imshow(rgbImage)