Random square sampling for single channel images

2 次查看(过去 30 天)
For a single-channel image with random square sampling, Not a fixed sub-window,how to generate random squares usingMATLAB, an example is as follows,Thank you

回答(2 个)

Subhadeep Koley
Subhadeep Koley 2020-12-28
Hi, here is one working example.
Hope this helps!
% Read the original image
img = imread('cameraman.tif');
[row, col, ~] = size(img);
imgSize = [row, col];
% Specify dimension of the random square
squareSize = [50, 50];
% Calculate crop rectangle
maximumPosValue = (imgSize - squareSize + 1);
initialRandomPos = [randi(maximumPosValue(1)), randi(maximumPosValue(2))];
cropRect = [initialRandomPos(2), initialRandomPos(1), squareSize(2)-1, squareSize(1)-1];
% Crop the image
imgCropped = imcrop(img, cropRect);
% Visualize results
out = imtile({img, imgCropped}, 'BackgroundColor', 'w');
figure
imshow(out)
title('Original image | Random cropped image');
  2 个评论
len Bruce
len Bruce 2020-12-28
Very good, but your square sampling is a set fixed window size, what I want is to generate a square area based on the coordinates of the image formed by random numbers,the sampled square area appears randomly in the image and square size is variable,such as image(x1:x2, y1:y2)
Subhadeep Koley
Subhadeep Koley 2020-12-28
@len Bruce you can randomize the sqare window size like below.
% Read the original image
img = imread('peppers.png');
[row, col, ~] = size(img);
imgSize = [row, col];
% Specify dimension of the random square
val = randi(min(imgSize));
squareSize = [val, val];
% Calculate crop rectangle
maximumPosValue = (imgSize - squareSize + 1);
initialRandomPos = [randi(maximumPosValue(1)), randi(maximumPosValue(2))];
cropRect = [initialRandomPos(2), initialRandomPos(1), squareSize(2)-1, squareSize(1)-1];
% Crop the image
imgCropped = imcrop(img, cropRect);
% Visualize results
out = imtile({img, imgCropped}, 'BackgroundColor', 'w');
figure
imshow(out)
title('Original image | Random cropped image');

请先登录,再进行评论。


len Bruce
len Bruce 2020-12-28
Generate the coordinates of the image square sampling based on random numbers,such as the upper left and the lower right co-ordinates of the ith random sub-window is denoted by (x1,y1)and (x2,y2)respectively. (image(x1:x2, y1:y2))

Community Treasure Hunt

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

Start Hunting!

Translated by