MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB图像处理] 三维图像处理的基础问题 (https://www.labfans.com/bbs/showthread.php?t=14360)

Cuky 2012-03-06 15:29

三维图像处理的基础问题
 
本人matlab初学,所以很多函数不太熟悉。
现在的处理对象是一个三维的图像,也就是一个三维的大矩阵,现在的算法大致是:将矩阵中每一个体素看做一个小正方形的左上角,然后依次从原数据矩阵中取出,进行DCT变换,经过一定的处理之后在放回原位。

我想到了matlab自带的imfilter函数,但是不知道它怎么做到高效率的,现在我的程序中for循环太多,导致速度极慢……如果硬是要用mex接C的话,我对于C的矩阵运算又不明白了……现在正处于纠结的阶段……

如果有谁有好的想法,在此请教了!非常感谢您!

另外在网上找了读取raw的很多程序,我自己改编了一下使得适合三维图像数据的读取,但是不知道为什么老是报错,而且读出来的图像是二值的图像,元数据是uint16的灰度图像啊……

下面是代码:
function Y = rawread2(char,A)
row = A(1);
col = A(2);
pag = A(3);
Y=zeros(row,col,pag);
y=zeros(row,col);

h = fopen(char,'rb');
%if h ~= 3
% error('failed to open the raw file.')
%end

for i=1:pag
fseek(h,row*col*2*(40-1),'bof');
y = fread(h,[row,col],'uint16');
Y(:,:,i) = y;
end
h = fclose(h);
if h == -1
error('failed to close the file.');
end

end

麻烦大家了~:)

Cuky 2012-03-06 15:32

回复: 三维图像处理的基础问题
 
上面的代码有一点错,这里是更改的版本,问题不变:
function Y = rawread2(char,A)
row = A(1);
col = A(2);
pag = A(3);
Y=zeros(row,col,pag);
y=zeros(row,col);

h = fopen(char,'rb');
%if h ~= 3
% error('failed to open the raw file.')
%end

for i=1: pag
fseek(h,row*col*2*(i-1),'bof');
y = fread(h,[row,col],'uint16');
Y(:,:,i) = y;
end
h = fclose(h);
if h == -1
error('failed to close the file.');
end

end


所有时间均为北京时间。现在的时间是 03:02

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.