matlab rawread,matlab如何读取raw数据

该代码段提供了一个名为`rawread`的MATLAB函数,用于读取RAW和PGM格式的图像文件。它首先检查文件扩展名以确定文件类型,然后读取文件头信息,对于PGM文件,还会读取图像尺寸和深度。函数创建一个灰度调色板并将数据缩放到0-1范围内。最后,它读取图像数据并返回图像矩阵和可选的调色板。
摘要由CSDN通过智能技术生成

%网上找的,看下有没有用function[X,map]=rawread(filename,n,m);%RAWREADReadaPortableBitmapfile,orarawfile。%RAWREAD('imagefile。raw',xsize,ysize)readsa"raw"imagefile%RAWREAD('imagefile。

pgm')readsa"pgm"(portablegraymap)image%[X,map]=RAWREAD('imagefile。raw')returnsboththeimageanda%colormap,sothat%[X,map]=rawread('imagefile。

raw',sx,sy);%or[X,map]=rawread('imagefile。pgm');%image(X)%colormap(map)%willdisplaytheresultwiththepropercolors。%%NOTE:mapisoptionalandcouldbereplacedduringthedisplayby%the"colormap('gray')"command%%SeealsoIMWRITE,IMREAD,IMAGE,COLORMAP。

dot=max(find(filename=='。'));suffix=filename(dot+1:dot+3);ifstrcmp(suffix,'pgm')|strcmp(suffix,'raw')disp(sprintf('nopens%sfilen',filename));fp=fopen(filename,'rb','b');%"Big-endian"byteorder。

if(fp<0)error(['Cannotopen'filename'。']);endifstrcmp(suffix,'pgm')%Readandcracktheheaderhead=fread(fp,2,'uchar');%pgmmagicnumber:P5if~strcmp(head,'P5'),fprintf(1,'nMagicNumber:%sn',head);elsefprintf(1,'nBadMagicNumber:%sn',head);error('cannotcontinuethisway,goodbyecruelworld');endc=fread(fp,1,'uchar');%readsthecarriagereturnseparatingP5fromthecreatorprecreator=fread(fp,1,'uchar');%lookfora'#'characterpreceedingacreatorsignatureifprecreator=='#',c=setstr(20);%anycharacterexceptcarriagereturncr=setstr(10);%definesacarriagereturnwhilec~=cr,c=fread(fp,1,'uchar');creator=[creator,c];end;fprintf(1,'ncreator:%sn',creator);elsefprintf('nNocreatorsignaturen');fseek(fp,-1,'cof');%returnonecharbeforeend;endifnargin<2,ifstrcmp(suffix,'raw')%assumeimagesizeis256x256disp('RAWfilewithoutsize:assumeimagesizeis256x256');n=256;m=256;else%forPGMfiles%readsthesizeanddepthdisp('readssizes');n=fscanf(fp,'%d',1);tn=num2str(n);disp(['xsize='tn]);m=fscanf(fp,'%d',1);tm=num2str(m);disp(['ysize='tm]);p=fscanf(fp,'%d',1);tp=num2str(p);disp(['depth='tp]);c=fread(fp,1,'uchar');%readsthelastcarriagereturnend;end%Createsagraypaletteandscaleitto[0,1]。

disp('creategraypalette');fori=1:256,map(i,[1:3])=[i/256,i/256,i/256];end;%Readtheimagedisp('Readsimagedata。。。');[X,l]=fread(fp,[n,m],'uchar');ifl~=m*n,l,error('HSIimagefileiswronglength'),end%Imageelementsarecolormapindices,sostartat1。

X=X'+1;fclose(fp);disp('end');elseerror('Imagefilenamemustendin''raw''or''pgm''。')end。

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值