## How to analyze one image 100 times using for loop?

Warid Islam

### Warid Islam (view profile)

님이 질문을 제출함. 5 Sep 2019
최근 활동 Gaurav Garg

### Gaurav Garg (view profile)

님이 답변함. 17 Sep 2019
Gaurav Garg

### Gaurav Garg (view profile)

님이 답변을 채택함.
Hello,
I have an image. I want to divide the image into 100 frames and analyze each frame separately. Please find my code below:
k = 1;
for j = 1: 100
dblSubtractedImage = img(j) - img(k);
s = dblSubtractedImage*5;
L = mat2gray(s);
imshow(L);
im = imclearborder(255-imclearborder(255-s));
hc = sum(im,2);
cr = im(fr:lr, :);
D = std2(cr);
meanIntensityValue = mean2(cr);
% imshow(cr)
K = mat2gray(cr);
min_image = min(K(:));
max_image = max(K(:));
% figure
imshow(K)
[rows, columns, numberOfColorBands] = size(K);
if numberOfColorBands > 1
grayImage = K(:, :, 2);
end
binaryImage = grayImage~= 40;
area2 = sum( binaryImage,'all');
end
AverageArea = (sum(area2))/100;
AverageStandardDeviation = (sum(D))/100;
AverageIntensityValue = (sum(meanIntensityValue))/100;
The first frame is used as a reference. The first frame is subtracted from all the other frames subsequently. The resulting images are then masked using a threshold which is shown above. Few other parameters such as the mean, standard deviation and the area of each of the resulting image are found. At the end of the for loop, the average value of the parameters above are found. However, I am getting the error message below. Any help would be appreciated. Thank you.
>> f
Index exceeds the number of array elements (0).
Error in mat2gray (line 38)
if limits(2)==limits(1) % Constant Image
Error in f (line 17)
K = mat2gray(cr);

표시 이전 댓글 수: 1
KSSV

### KSSV (view profile)

5 Sep 2019
YOu have only one image......how you can take it as 100 frames?
Warid Islam

### Warid Islam (view profile)

5 Sep 2019
Hi KSSV,
I have the other 100 frames too. Do I need to read all the images in the file and then perform the code?
Warid Islam

### Warid Islam (view profile)

5 Sep 2019
Hi KSSV,
All I need is to automate the process. I have attached 4 images of the same sample at different frames. The first image (1F1.jpg) would be subtracted from all the other images. There are around 200 images similar to the ones below at different frames. I was wondering if it is possible to use a for loop and perform the operation.

로그인 to comment.

R2019a

## 답변 수: 1

Gaurav Garg

### Gaurav Garg (view profile)

님의 답변 17 Sep 2019
채택된 답변

Hi,
I understand that you wish to analyze each frame separately. However, there’s some problem in the code you have written.
In line 4, you subtract the 2 images and store the output in sblSubtractedImage. Now, when you display sblSubtractedImage, you get 0 as output. Hence, the variables you use thereafter are also 0 and variable cr stores a 0 ×1 empty uint8 column vector. And therefore, you get error while using mat2gray.
What is happening in your case is, you have saved the file normally (using Windows option to save file) and you are reading subtracting first 2 pixels which are both white. However, if you use imwrite (MATLAB function) to save the image you will get the desired portion and this should solve your error.

로그인 to comment.

Translated by