⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgmwrite.m

📁 matlab的steel金字塔小波分解源代码
💻 M
字号:
% RANGE = pgmWrite(MTX, FILENAME, RANGE, TYPE, COMMENT)%% Write a MatLab matrix to a pgm (graylevel image) file.% This format is accessible from the XV image browsing utility.%% RANGE (optional) is a 2-vector specifying the values that map to% black and white, respectively.  Passing a value of 'auto' (default)% sets RANGE=[min,max] (as in MatLab's imagesc).  'auto2' sets% RANGE=[mean-2*stdev, mean+2*stdev].  'auto3' sets% RANGE=[p1-(p2-p1)/8, p2+(p2-p1)/8], where p1 is the 10th percentile% value of the sorted MATRIX samples, and p2 is the 90th percentile% value.%% TYPE (optional) should be 'raw' or 'ascii'.  Defaults to 'raw'.% Hany Farid,  Spring '96.  Modified by Eero Simoncelli, 6/96.function range = pgmWrite(mtx, fname, range, type, comment );[fid,msg] = fopen( fname, 'w' );if (fid == -1)  error(msg);end%------------------------------------------------------------%% optional ARGS:if (exist('range') ~= 1)  range = 'auto';endif (exist('type') ~= 1)  type = 'raw';end%------------------------------------------------------------%% Automatic range calculation: if (strcmp(range,'auto1') | strcmp(range,'auto'))  [mn,mx] = range2(mtx);  range = [mn,mx];elseif strcmp(range,'auto2')  stdev = sqrt(var2(mtx));  av = mean2(mtx);  range = [av-2*stdev,av+2*stdev]; 	% MAGIC NUMBER: 2 stdevselseif strcmp(range, 'auto3')  percentile = 0.1;			% MAGIC NUMBER: 0<p<0.5  [N,X] = histo(mtx);  binsz = X(2)-X(1);  N = N+1e-10;  % Ensure cumsum will be monotonic for call to interp1  cumN = [0, cumsum(N)]/sum(N);  cumX = [X(1)-binsz, X] + (binsz/2);  ctrRange = interp1(cumN,cumX, [percentile, 1-percentile]);  range = mean(ctrRange) + (ctrRange-mean(ctrRange))/(1-2*percentile);elseif isstr(range)  error(sprintf('Bad RANGE argument: %s',range))endif ((range(2) - range(1)) <= eps)  range(1) = range(1) - 0.5;  range(2) = range(2) + 0.5;end%%% First line contains ID string:%%% "P1" = ascii bitmap, "P2" = ascii greymap,%%% "P3" = ascii pixmap, "P4" = raw bitmap, %%% "P5" = raw greymap, "P6" = raw pixmapif strcmp(type,'raw')  fprintf(fid,'P5\n');  format = 5;elseif strcmp(type,'ascii')  fprintf(fid,'P2\n');  format = 2;else  error(sprintf('PGMWRITE: Bad type argument: %s',type));endfprintf(fid,'# MatLab PGMWRITE file, saved %s\n',date);if (exist('comment') == 1)  fprintf(fid,'# %s\n', comment);end%%% dimensionsfprintf(fid,'%d %d\n',size(mtx,2),size(mtx,1));%%% Maximum pixel valuefprintf(fid,'255\n');%% MatLab's "fprintf" floors when writing floats, so we compute%% (mtx-r1)*255/(r2-r1)+0.5mult = (255 / (range(2)-range(1)));mtx = (mult * mtx) + (0.5 - mult * range(1));mtx = max(-0.5+eps,min(255.5-eps,mtx));if (format == 2)  count  = fprintf(fid,'%d ',mtx');elseif (format == 5)  count  = fwrite(fid,mtx','uchar');endfclose(fid);if (count ~= size(mtx,1)*size(mtx,2))  fprintf(1,'Warning: File output terminated early!');end	  %%% TEST:% foo = 257*rand(100)-1;% pgmWrite(foo,'foo.pgm',[0 255]);% foo2=pgmRead('foo.pgm');% size(find((foo2-round(foo))~=0))% foo(find((foo2-round(foo))~=0))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -