📄 avw_view.html
字号:
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>0709 0710 <span class="keyword">if</span> isfield(AVWVIEW.handles,<span class="string">'axial_image'</span>),0711 Saxi = squeeze(AVWVIEW.avw.img(:,:,AVWVIEW.slices.axi));0712 set(AVWVIEW.handles.axial_image,<span class="string">'CData'</span>,Saxi');0713 <span class="keyword">end</span>0714 <span class="keyword">if</span> isfield(AVWVIEW.handles,<span class="string">'axial_sliderN'</span>),0715 set(AVWVIEW.handles.axial_sliderN,<span class="string">'String'</span>,num2str(AVWVIEW.slices.axi));0716 set(AVWVIEW.handles.axial_sliderN,<span class="string">'Value'</span>,AVWVIEW.slices.axi);0717 <span class="keyword">end</span>0718 <span class="keyword">if</span> isfield(AVWVIEW.handles,<span class="string">'axial_slider'</span>),0719 set(AVWVIEW.handles.axial_slider,<span class="string">'Value'</span>,AVWVIEW.slices.axi);0720 <span class="keyword">end</span>;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -