MATLAB: How to find minimum Pixel value

digital image processingdigital signal processingimage processing

Hi there,
I have 64*64 pixel Image and value are measured in 40s withe Image Rate (47 1/s). Image file is 64*64*1913 double, I want to find location for minimum Pixel Value (row and colmns) in region (32:64, 32:64) in all of the time. I used these two codes but it didn't work.
[row, column] = find(min(squeeze(nanmean(squeeze(nanmean((imgfilt(32:64,32:64,:)))))) == 1))
row =
[]
column =
[]
% % % % % % % % % % % % % % % % % % %
>> M = (min(nanmean(nanmean( imgfilt(32:64,32:64,: ),2),1)));
[min_val,idx] = min(M(:))
[row,col] = ind2sub(M,idx)
min_val =
-3.6858e+14
idx =
1
row =
1
col =
1

Best Answer

You should be able to do
minValue = min(thisImage(:))
[row, column] = find(thisImage == minValue);
for each time point (slice of your 3-D image volume). Here is a full demo:
imgfilt = randi(65535, 64, 64, 1913); % Create sample data. You, of course, would use your own.
imgfilt(44:66) = nan;
[rows, columns, numberOfTimePoints] = size(imgfilt)
for slice = 1 : numberOfTimePoints
% Get the image for this time point.
thisImage = imgfilt(32:end, 32:end, slice);
minValue = min(thisImage(:));
[row, column] = find(thisImage == minValue);
% To get original indices, need to add 31 to the row and column
row = row + 31;
column = column + 31;
% Store the rows and columns where this time point image equals the min.
% We are using a cell array because each image may have a different number
% of locations where the min occurs.
ca{slice, 1} = row;
ca{slice, 2} = column;
% For fun, print them out.
for k = 1 : length(row)
r = row(k);
c = column(k);
fprintf('For time point %d, the min value of %f occurs at row %d, column %d.\n', ...
slice, imgfilt(r, c, slice), r, c);
end
end