我的编程挑战超出了我非常结巴的Matlab专业知识。我有一个图像列表和单元格数组中的ROI掩码列表,我想分别提取每个ROI的平均像素值, 我的代码是这样的:
files=dir('*.tif');
for f=1:length(files)
image=im2double(imread(files(f).name));
pixel_value(:,f)=cellfun(@(x) extractROIpixel(x,image), mask);
% apply extractROIpixel on each cell of the mask array
end
function [ mean_pixel_value ] = extractROIpixel( mask, img )
mask=im2double(mask);
mask(mask == 0) = NaN;
mask_area=mask.*img;
mean_pixel_value=mean(mask_area(~isnan(mask_area)));
end
这可行,但非常慢(<5分钟),我有400张图像要处理200个长单元阵列的掩码(200个ROI)。 我确信这是由于设计不佳,因为Matlab被广泛用于这种图像处理任务,但我无法想出另一种经济实惠的方法,感谢提前。
答案 0 :(得分:0)
怎么样:
files=dir('*.tif');
for f=1:length(files)
image=im2double(imread(files(f).name));
masked=cellfun(@(x) image.*x, mask);
stats{f}=cellfun(@(x) regionprops(x, 'MeanIntensity'), masked);
end
我没有对这两种方法进行基准测试,因此我不知道它是否更有效。