Excluding white squares from a scrambled image

조회 수: 1 (최근 30일)
Lauren
Lauren 2014년 8월 27일
Hi There,
So I have a piece of code which should chop up squares of an image and scramble them. I have a series of faces which are on a white background. What I am trying to do is take a random square from a random image to add to a final scrambled image, but not if that square is white.
This is the code:
%% first getting the size of the image and dividing it into blocks of 30 pixels
n = 30;
image_size = imread(all_images{1});
mn = floor(size(image_size)/n);
m1 = mn(1);
n1 = mn(2);
% a new matrix for the scrambled blocks to go in
newim = zeros(m1*n,n1*n);
% there are 51 images in the file
for bb = 1:51
for k = 1:m1*n1
good_squares = false;
while ~good_squares
current_image = randsample(1:51, 1);
my_image = imread(all_images{current_image});
ind = randperm(m1*n1);
[ind1, ind2] = ind2sub([m1, n1], ind);
[i,j]=ind2sub([m1, n1], k);
newim((i-1)*n+1:i*n, (j-1)*n+1:j*n) = ...
my_image((ind1(k)-1)*n+1:ind1(k)*n,(ind2(k)-1)*n+1:ind2(k)*n);
x = my_image((ind1(k)-1)*n+1:ind1(k)*n,(ind2(k)-1)*n+1:ind2(k)*n);
good_squares = true;
if x(1, 1) == 255 && x(1, 30) == 255 && x(30, 1) == 255
good_squares = false;
elseif x(1, 1) == 255 && x(1, 30) == 255 && x(30, 30) == 255
good_squares = false;
elseif x(30, 1) == 255 && x(30, 30) == 255 && x(1, 30) == 255
good_squares = false;
end
end
end
% write out new mask
imwrite(newim, ['mask' num2str(bb) '.bmp'],'bmp');
end
So where I run the exclusion portion of the code (good_blocks = false) I am trying to exclude a block if the pixels in three of the corners are white. This code spits out 51 pure white images, so either the indexing is broken, or the while loop is not right. Any suggestions on how to do this is appreciated.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by