📄 avw_view_new.html
字号:
0510
0511 bins = intensity_min:intensity_max;
0512
0513 fprintf(<span class="string">'...calculating histogram for %d bins.\n'</span>,length(bins));
0514
0515 <span class="keyword">for</span> i=1:size(avw.img,3),
0516 n = hist(avw.img(:,:,i), bins);
0517 <span class="keyword">if</span> i == 1,
0518 intensity_volume = sum(n,2);
0519 <span class="keyword">else</span>
0520 intensity_slice = sum(n,2);
0521 intensity_volume = intensity_volume + intensity_slice;
0522 <span class="keyword">end</span>
0523 <span class="keyword">end</span>
0524 figure(<span class="string">'name'</span>,<span class="string">'intensity histogram'</span>);
0525 bar(bins,intensity_volume);
0526
0527
0528
0529
0530 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
0531
0532 <span class="keyword">case</span> <span class="string">'zoom'</span>
0533
0534 x = AVWVIEW.slices.sag;
0535 y = AVWVIEW.slices.cor;
0536 z = AVWVIEW.slices.axi;
0537
0538 <span class="keyword">switch</span> AVWVIEW.view,
0539 <span class="keyword">case</span> <span class="string">'axi'</span>,
0540 slice = rot90(AVWVIEW.avw.img(:,:,z));
0541 <span class="keyword">case</span> <span class="string">'cor'</span>,
0542 slice = rot90(squeeze(AVWVIEW.avw.img(:,y,:)));
0543 <span class="keyword">case</span> <span class="string">'sag'</span>,
0544 slice = rot90(squeeze(AVWVIEW.avw.img(x,:,:)));
0545 <span class="keyword">end</span>
0546
0547 figure;
0548 imagesc(slice,AVWVIEW.clim);
0549 colormap(gray); axis off; zoom on;
0550 daspect(AVWVIEW.daspect);
0551
0552
0553
0554
0555 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
0556
0557 <span class="keyword">case</span> <span class="string">'save_image'</span>,
0558
0559 [filename, pathname] = uiputfile(<span class="keyword">...</span>
0560 { <span class="string">'*.png'</span>,<span class="string">'PNG Files (*.png)'</span>; <span class="keyword">...</span>
0561 <span class="string">'*.jpg'</span>,<span class="string">'JPG Files (*.jpg)'</span>; <span class="keyword">...</span>
0562 <span class="string">'*.ppm;*.pgm;*.pbm'</span>,<span class="string">'Portable Anymap (*.ppm,*.pgm,*.pbm)'</span>; <span class="keyword">...</span>
0563 <span class="string">'*.*'</span>, <span class="string">'All Files (*.*)'</span>}, <span class="keyword">...</span>
0564 <span class="string">'IMWrite to file'</span>);
0565
0566 <span class="keyword">if</span> filename,
0567
0568 x = AVWVIEW.slices.sag;
0569 y = AVWVIEW.slices.cor;
0570 z = AVWVIEW.slices.axi;
0571
0572 pixelsPerMM = 1 ./ double(AVWVIEW.avw.hdr.dime.pixdim(2:4));
0573 pixelsPerMeter = pixelsPerMM .* 1000;
0574
0575 <span class="keyword">switch</span> AVWVIEW.view,
0576 <span class="keyword">case</span> <span class="string">'axi'</span>,
0577 slice = rot90(AVWVIEW.avw.img(:,:,z));
0578 xresolution = pixelsPerMeter(1);
0579 yresolution = pixelsPerMeter(2);
0580 <span class="keyword">case</span> <span class="string">'cor'</span>,
0581 slice = rot90(squeeze(AVWVIEW.avw.img(:,y,:)));
0582 xresolution = pixelsPerMeter(1);
0583 yresolution = pixelsPerMeter(3);
0584 <span class="keyword">case</span> <span class="string">'sag'</span>,
0585 slice = rot90(squeeze(AVWVIEW.avw.img(x,:,:)));
0586 xresolution = pixelsPerMeter(2);
0587 yresolution = pixelsPerMeter(3);
0588 <span class="keyword">end</span>
0589
0590 <span class="comment">% scale the image values to between 0-1 for imwrite</span>
0591 <span class="comment">% (initially used max of slice, but actually want to</span>
0592 <span class="comment">% use the scaled intensity from the gui).</span>
0593 <span class="comment">%maxValue = max(max(slice));</span>
0594 <span class="comment">%scaledSlice = slice ./ maxValue;</span>
0595 scaledSlice = slice ./ AVWVIEW.clim(2);
0596
0597 <span class="comment">% RGB = ind2rgb(X,map) converts the matrix X and corresponding</span>
0598 <span class="comment">% colormap map to RGB (truecolor)</span>
0599
0600 file = [pathname,filename];
0601 fprintf(<span class="string">'saving to:...%s\n'</span>,file);
0602
0603 <span class="comment">%Most of the supported image file formats store uint8 data.</span>
0604 <span class="comment">%PNG and TIFF formats additionally support uint16 data. For</span>
0605 <span class="comment">%grayscale and RGB images, if the data array is double, the</span>
0606 <span class="comment">%assumed dynamic range is [0,1]. The data array is automatically</span>
0607 <span class="comment">%scaled by 255 before being written as uint8. If the data array</span>
0608 <span class="comment">%is uint8 or uint16, it is written without scaling as uint8 or</span>
0609 <span class="comment">%uint16, respectively.</span>
0610
0611 [pathname,filename,ext] = fileparts([pathname,filename]);
0612
0613 <span class="keyword">switch</span> ext,
0614
0615 <span class="keyword">case</span> <span class="string">'.png'</span>,
0616 <span class="comment">%imwrite(uint8(image),colormap,file,format);</span>
0617 <span class="comment">%imwrite(slice,colormap(gray),file,format,...</span>
0618
0619 <span class="comment">% 'XResolution' A scalar indicating the number of</span>
0620 <span class="comment">% pixels/unit in the horizontal direction</span>
0621 <span class="comment">%</span>
0622 <span class="comment">% 'YResolution' A scalar indicating the number of</span>
0623 <span class="comment">% pixels/unit in the vertical direction</span>
0624 <span class="comment">%</span>
0625 <span class="comment">% 'ResolutionUnit' Either 'unknown' or 'meter'</span>
0626 format = <span class="string">'png'</span>;
0627 imwrite(scaledSlice,file,format,<span class="keyword">...</span>
0628 <span class="string">'BitDepth'</span>,16,<span class="string">'ResolutionUnit'</span>,<span class="string">'meter'</span>,<span class="keyword">...</span>
0629 <span class="string">'XResolution'</span>,xresolution,<span class="keyword">...</span>
0630 <span class="string">'YResolution'</span>,yresolution);
0631
0632 <span class="keyword">case</span> <span class="string">'.jpg'</span>,
0633 format = <span class="string">'jpg'</span>;
0634 imwrite(scaledSlice,file,format);
0635 <span class="keyword">case</span> {<span class="string">'.ppm'</span>,<span class="string">'.pgm'</span>,<span class="string">'.pbm'</span>},
0636 format = ext(2:end);
0637 imwrite(scaledSlice,file,format);
0638 <span class="keyword">otherwise</span>
0639 fprintf(<span class="string">'...cannot write %s image files\n'</span>,ext);
0640 <span class="keyword">end</span>
0641 <span class="keyword">end</span>
0642
0643
0644
0645
0646
0647 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
0648
0649 <span class="keyword">case</span> <span class="string">'quit'</span>,
0650
0651 flipStatus = get(AVWVIEW.handles.flipStatus,<span class="string">'string'</span>);
0652 <span class="keyword">if</span> strmatch(flipStatus,<span class="string">'L>>R (neurological)'</span>),
0653 fprintf(<span class="string">'...returning avw.img to radiological orientation;\n'</span>);
0654 fprintf(<span class="string">'...use avw_flip to permanently change the orientation.\n'</span>);
0655 AVWVIEW.avw.img = flipdim(AVWVIEW.avw.img,1);
0656 <span class="keyword">end</span>;
0657
0658 <span class="comment">% try to assign back into the input struct</span>
0659 <span class="keyword">if</span> ~isempty(AVWVIEW.invarname),
0660 fprintf(<span class="string">'...returning data to base workspace struct ''%s''\n'</span>,AVWVIEW.invarname);
0661 assignin(<span class="string">'base'</span>,AVWVIEW.invarname,AVWVIEW.avw);
0662 <span class="keyword">elseif</span> evalin(<span class="string">'base'</span>,<span class="string">'exist(''mri'',''var'')'</span>),
0663 fprintf(<span class="string">'...returning data to base workspace struct ''mri''\n'</span>);
0664 string = [<span class="string">'AVWVIEW = get('</span>, num2str(AVWVIEW.gui),<span class="keyword">...</span>
0665 <span class="string">',''Userdata''); mri.data = AVWVIEW.avw; clear AVWVIEW;'</span>];
0666 evalin(<span class="string">'base'</span>,string);
0667 <span class="keyword">else</span>
0668 fprintf(<span class="string">'...returning data into base workspace struct ''avw''\n'</span>);
0669 assignin(<span class="string">'base'</span>,<span class="string">'avw'</span>,AVWVIEW.avw);
0670 <span class="keyword">end</span>
0671 close gcbf;
0672
0673 <span class="keyword">otherwise</span>,
0674
0675 <span class="keyword">end</span>
0676
0677
0678 <span class="keyword">switch</span> command,
0679 <span class="keyword">case</span> <span class="string">'quit'</span>,
0680 <span class="keyword">otherwise</span>,
0681 set(AVWVIEW.gui,<span class="string">'UserData'</span>,AVWVIEW);
0682 <span class="keyword">end</span>
0683
0684 <span class="keyword">if</span> nargout > 0,
0685 varargout{1} = AVWVIEW.avw;
0686 <span class="keyword">end</span>
0687
0688
0689 <span class="keyword">return</span>
0690
0691
0692
0693
0694
0695
0696
0697
0698
0699 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
0700 <span class="comment">% SUBFUNCTIONS</span>
0701
0702
0703
0704
0705
0706
0707 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
0708 <a name="_sub1" href="#_subfunctions" class="code">function axial_update(AVWVIEW)</a>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -