function BrainNet_GenSurface(filename,outputfilename,threshold) % BrainNet Viewer, a graph-based brain network mapping tool, by Mingrui Xia % Function to generate surface file from Nifti mask %----------------------------------------------------------- % Copyright(c) 2015 % State Key Laboratory of Cognitive Neuroscience and Learning, Beijing Normal University % Written by Mingrui Xia % Mail to Author: Mingrui Xia % Version 1.53; % Date 20151028; % Last edited 20151028 %----------------------------------------------------------- % % Usage: % BrainNet_GenSurface(filename,outputfilename); % filenames is the name of the Nifti mask file. % outputfilename is the name of the output surface file, which should be ended with '.nv'. % threshold is used to binarize the image. If the input image is a binary image, this parameter can be ignored. % % Example: % % Threshold the spm gray template with 0.2 and generate the surface % BrainNet_GenSurface('grey.nii','grey.nv',0.2); % [BrainNetPath] = fileparts(which('BrainNet.m')); BrainNet_SPMPath = fullfile(BrainNetPath, 'BrainNet_spm8_files'); if exist('spm.m','file') surf_hdr = spm_vol(filename); surf_vol = spm_read_vols(surf_hdr); else addpath(BrainNet_SPMPath); surf_hdr = BrainNet_spm_vol(filename); surf_vol = BrainNet_spm_read_vols(surf_hdr); rmpath(BrainNet_SPMPath); end if nargin > 2 surf_vol(surf_vol=threshold) = 1; end vol = smooth3(surf_vol,'box',7); fv = isosurface(vol); coord = fv.vertices(:,1); fv.vertices(:,1) = fv.vertices(:,2); fv.vertices(:,2) = coord; fv.vertices = fv.vertices'; fv.vertices(4,:) = 1; fv.vertices = surf_hdr.mat * fv.vertices; fv.vertices(4,:) = []; vertex_num = size(fv.vertices,2); ntri = size(fv.faces,1); fid = fopen(outputfilename,'wt'); fprintf(fid,'%d\n',vertex_num); for i=1:vertex_num fprintf(fid,'%f %f %f\n',fv.vertices(1:3,i)); end fprintf(fid, '%d\n', ntri); for i=1:ntri fprintf(fid,'%d %d %d\n',fv.faces(i,1:3)); end fclose(fid);