Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2012-03-06, 15:29   #1
Cuky
初级会员
 
注册日期: 2012-03-06
住址: 北京海淀
帖子: 2
声望力: 0
Cuky 正向着好的方向发展
默认 三维图像处理的基础问题

本人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=1ag
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   #2
Cuky
初级会员
 
注册日期: 2012-03-06
住址: 北京海淀
帖子: 2
声望力: 0
Cuky 正向着好的方向发展
默认 回复: 三维图像处理的基础问题

上面的代码有一点错,这里是更改的版本,问题不变:
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
Cuky 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 10:49


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