multi-spectral images with imageDatastore
1 次查看(过去 30 天)
显示 更早的评论
I have images in different directories that I would like to concatenate before passing them to a CNN. I have two class labels separated in two folders. Within each folder, there are subfolders corresponding to the channels of the multi-spectral image. To concatenate these images I created two functions
function multi = cat_datastore(label,dir1,dir2,dir3)
rgb = imageDatastore(dir1);
rgb.Labels = categorical(repelem(label,length(rgb.Files)));
mask = imageDatastore(dir2);
mask.Labels = rgb.Labels ;
seg = imageDatastore(dir3);
seg.Labels = rgb.Labels ;
imds = combine(rgb, mask, seg);
multi = transform(imds,@concat_mask);
end
and
concat_mask
which concatenates all channels. If I run read(muti), then I can see the final image is of size WxHxN, with N being the number of channels. My question is in regards to combining this datastore with the images in the other label. I assumed
imds = combine(multi1, multi2);
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7);
would be helpful but when trying to run, I get an error 'Check for missing argument or incorrect argument data type in call to function 'splitEachLabel'. This makes sense because splitEachLabel is expecting an imageDatastore object rathern than a TransformedDatastore or a CombineDatastore.
I also tried (even though I am not a fan of this), writing all images to a folder and then create a datastore from it. So I ran,
writeall(multi1, dir ,'FolderLayout','flatten','OutputFormat', 'tif') ;
but I get an error
Unable to open file "" for writing. You might not have write permission.
Any advice? Should I just write a for loop and save the concatenated images in a folder?
0 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Recognition, Object Detection, and Semantic Segmentation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!