Creating an Image from a Textfile Data using Matlab
1 view (last 30 days)
I am completely new to matlab and image related applications. I am struggling to understand image related functionality in matlab. With the below lines of code, I am breaking the 64x64 size colored image and storing it in a textfile after normalization.
input_image_filename = './Images/image_64x64.jpg'; % A 64x64 size colored image
input_image_3D = imread(input_image_filename); % Breaking image into pixel
fprintf(fid,'%0.16f\n',norm_image_3D); % Written the image to file % The number of entries i am getting in text file is 12288
After this, suppose I want to generate the image back from the textfile data, how should I do that? I tried something as below but it doesnot work.
filename = 'filename.txt';
Please help me in completing this code.
Simon Chan on 15 Jan 2022
Edited: Simon Chan on 15 Jan 2022
Try the followings: (with editing below)
Normalization just divide by 255 for uint8 image.
[Ny,Nx,Nc] = size(input_image_3D); % Ypur input_image_3D, size is 64x64x3
J = zeros(size(input_image_3D)); % Initialize matrix J
for k =1:Nc
I = double(input_image_3D(:,:,k));
J(:,:,k) = I/255; % Perform normalization channel by channel
J = reshape(J,Ny,,1); % Reshape to 2 dimensions first
J = reshape(J,,1); % Reshape to a column vector
%% No commnent below, same as your code
% The txt file is a column vector and hecnce you need to revert back to
% its original size. Also use imshow instead of imshow3D
testingReadFile=importdata('filename.txt'); % Import the txt file
revertI = reshape(testingReadFile,Ny,); % Reshape back to 64 rows first
revertI = reshape(revertI,Ny,,Nc); % Revert back to 3 channels
imshow(revertI,) % Showing the image