1-bit TIFF images having more than 1 channel are not supported.
4 views (last 30 days)
Show older comments
clear;clc;close all
% Load the Image Dataset of Normal and Malignant WBC
imdsTrain = imageDatastore('D:\Project\DB1\train','IncludeSubfolders',true,'LabelSource','foldernames');
imdsTest = imageDatastore('D:\Project\DB1\test','IncludeSubfolders',true,'LabelSource','foldernames');
%Perform Cross-Validation using Hold-out method with a percentage split of 70% training and 30% testing
%[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,'randomized');
%%
%%
newext = '.tif';
while hasdata(imdsTrain)
[img, info] = read(imdsTrain);
[filedir, basename, ext] = fileparts(info.Filename);
newfilename = fullfile(filedir, [basename, newext]);
img3 = repmat( imresize(img, [299 299]), [1 1 3] );
imwrite(img3, newfilename);
end
while hasdata(imdsTest)
[img, info] = read(imdsTest);
[filedir, basename, ext] = fileparts(info.Filename);
newfilename1 = fullfile(filedir, [basename, newext]);
img3 = repmat( imresize(img, [299 299]), [1 1 3] );
imwrite(img3, newfilename1);
end
load('HW');
%%
%Select the Test images and save in Y_test
Y_test = imdsReSz1.UnderlyingDatastore.Labels;
%%
% optimzation techniques selection and hyperparamter selection
options = trainingOptions('adam', ...
'MiniBatchSize',16, ...
'MaxEpochs',20, ...
'InitialLearnRate',1e-4, ...
'Shuffle','every-epoch', ...
'ValidationData',imdsReSz1, ...
'ValidationFrequency',3, ...
'Verbose',false, ...
'Plots','training-progress');
%%
%CNN model training
netTransfer = trainNetwork(imdsReSz,HW,options);
%%
% for i=1:numel(imdsValidation.Files)
% a=[imdsValidation.Files(i)];
% a = imread(char(a));
% % featuresTest22 = activations(net,a,layer,'OutputAs','rows');
% YPred(i) = classify(netTransfer,a);
% imshow(a),title(char(YPred));
% i
% end
%%
% CNN Model validation
YPred = classify(netTransfer,imdsReSz1);
%Performance evaluation of Deep Learning Trained Model
plotconfusion(Y_test,YPred)
Error using writetif (line 78)
1-bit TIFF images having more than 1 channel are not supported.
Error in imwrite (line 546)
feval(fmt_s.write, data, map, filename, paramPairs{:});
Error in CNN1 (line 19)
imwrite(img3, newfilename);
>>
0 Comments
Accepted Answer
DGM
on 13 Jan 2022
Edited: DGM
on 13 Jan 2022
This is happening because img is of class 'logical'. You expand img to MxNx3 (img3). When writing the TIFF, if the BitsPerSample property is 1 (logical), then the SamplesPerPixel property cannot be anything other than 1. You're trying to set SamplesPerPixel to 3.
How you handle this depends on what you want. If all your images are logical class, then I see no reason to expand them. If you don't intend to treat these images as logical images, you can convert the images to some compatible class (e.g. using im2uint8() or something).
4 Comments
DGM
on 20 Jan 2022
I don't know what inception_v3 is. I have no familiarity with DLT. I'm not sure why you're expanding the images to 3 channels, or whether that's necessary for the tools or process you're using.
If your process works only with 3-channel images, check the incoming image and then only expand it if it's not already a 3-channel image.
[img, info] = read(imdsTrain);
% ...
img = imresize(im2uint8(img), [299 299]);
if size(img,3)==1
img3 = repmat(img, [1 1 3] );
elseif size(img,3)==3
img3 = img;
else
error('expected image to have either 1 or 3 channels, instead it has %d channels',size(img,3))
end
% ...
On the other hand, if your process works with 1-channel images and you want to work with that (perhaps the reduced data volume is advantageous in terms of speed?)
[img, info] = read(imdsTrain);
% ...
img = imresize(im2uint8(img), [299 299]);
if size(img,3)==1
img3 = img;
elseif size(img,3)==3
img3 = rgb2gray(img);
else
error('expected image to have either 1 or 3 channels, instead it has %d channels',size(img,3))
end
% ...
I don't have DLT, so I can't really say what's best for your needs.
More Answers (0)
See Also
Categories
Find more on Image Processing Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!