Mar*_*ius 5 matlab image-processing median
我有一大堆800 16位灰度图像,2048x2048px.它们是从一个BigTIFF文件中读取的,整个堆栈几乎不适合我的RAM(8GB).现在我需要进行中位投影.这意味着我想计算所有800帧中每个像素的中位数.Matlab中值函数失败,因为没有足够的内存可以为函数调用复制整个数组.什么是计算中位数的有效方法?
我曾尝试使用for循环来计算一次一个像素的中位数,但这仍然非常慢.
正如@Shai 建议的那样,迭代块可能是最直接的解决方案。如果您经常遇到此问题,您可能需要考虑将图像转换为 mat 文件,以便您可以直接从磁盘访问像素作为 nd 数组。
%# convert to mat file
matObj = matfile('dest.mat','w');
matObj.data(2048,2048,numSlices) = 0;
for t = 1:numSlices
matObj.data(:,:,t) = imread(tiffFile,'index',t);
end
%# load a block of the matfile to take median (run as part of a loop)
medianOfBlock = median(matObj.data(1:128,1:128,:),3);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |