convert larger image into patches

6 次查看(过去 30 天)
hi there,
I currently have a large image sized 600x1000 and would like to instead read this as patches of 51x51, how can I do this?
have tried to reshape but number of elements in each doesn't match to an integer
thanks very much

回答(2 个)

Ameer Hamza
Ameer Hamza 2020-12-1
  2 个评论
cameron lord
cameron lord 2020-12-1
Thankyou, I used mat2tiles and it splits the image up - but i am trying to multiply each of the patches with a 51x51 filter matrix but cannot as my original image is not a multiple of 51 so some of the matrix dimensions disagree.
is there a way to get round this?
Ameer Hamza
Ameer Hamza 2020-12-2
You can remove those cells
img = rand(600,1000);
img_parts = mat2tiles(img, [51 51]);
idx = ~cellfun(@(x) all(size(x)==[51 51]), img_parts);
img_parts(:,all(idx,1)) = [];
img_parts(all(idx,2),:) = [];

请先登录,再进行评论。


Image Analyst
Image Analyst 2020-12-1
What exactly do you mean by "read this"? Do you want to resize the entire image to 51x51 with imresize(yourImage, [51, 51]) or do you want to scan the image with a 51x51 window, moving in jumps of 51 pixels, and process the image inside, like you'd do with blockproc(). I'm attaching images for blockproc.
If the image is not a perfect multiple of 51, what do you want to do with the left over sliver?
  2 个评论
cameron lord
cameron lord 2020-12-1
yes, your right with the second one. i'd like to process the whole image - but in chunks of 51x51, passing them through a filter then plot the resulting activation map.
as for the sliver that will be left over, i'm not entirely sure. perhaps just remove it from the activation map completely?
Image Analyst
Image Analyst 2020-12-2
OK, so simply crop the image before blockproc() with indexing. Just compute the number of blocks.
numBlocksR = size(yourImage, 1);
numBlocksC = size(yourImage, 2);
yourImage = yourImage(1 : (floor(numBlocksR/51) * 51), 1 : (floor(numBlocksC/51) * 51), :);

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by