MATLAB Answers

Running a forloop to add text in the black pixels only!

8 views (last 30 days)
Tanjena Azim
Tanjena Azim on 20 Sep 2021
Edited: Tanjena Azim on 22 Sep 2021 at 8:05
Here, 'FID' is a text file, I embed it with 'X' image by the following code.....But now I want to add the text in the black background only!...
So, my idea is to run another forloop, which will embed the text when it find the black pixels '0' and will skip the row when it find '>0' or '256' white pixels. So that, the central white object can be avoided from adding text.
Are here any forloop expert to help me with this idea???
FID = fileread('I:\New folder\ldpc.txt');
Str=uint16(FID);
x=imread('I:\New folder\watershed.bmp');
x=uint16(x);
[x_row,x_col]=size(x);
c=numel(Str);
a=1;
for i=1:x_row
for j=1:x_col
if(a<=c)
if(x(i,j)+Str(a)>255)
temp=x(i,j)+Str(a)-256;
else
temp=x(i,j)+Str(a);
end
z(i,j)=uint8(temp);
else
z(i,j)=uint8(x(i,j));
end
a=a+1;
end
end

Answers (1)

DGM
DGM on 20 Sep 2021
Consider:
Str = fileread('adapthisteq.m'); % using this in place of a custom text file
x = im2uint8(imread('circles.png')); % assuming images should be uint8 scaled
% assuming that we're only modifying areas which are exactly zero
% also assuming that Str may contain values outside [0 255]
z = x.';
bpixels = find(z==0);
z(bpixels(1:numel(Str))) = mod(Str,256);
z = z.';
imshow(z)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!