I am interested in automatic segmentation of different muscle types in the calf region using MATLAB. Please, are there any robust MATLAB toolbox for MRI Calf Muscle Segmentation?
this can help you
%analyze_series8.m
% Copyright 2004-2010 The MathWorks, Inc.
%start with clean slate (nobkpt)
clear %no variables
close all %no figures
clc %empty command window
%% Data Access
%----------------------------------------------------------------------
%DICOM support (nobkpt)
web([docroot '/toolbox/images/intro19.html'])
%filename convention used in image series (nobkpt)
prefix = 'Series 8\I0000';
fnum = 417:476;
ext = '_anon.dcm';
%first filename in series (nobkpt)
fname = [prefix num2str(fnum(1)) ext];
%examine file header (nobkpt)
info = dicominfo(fname)
%extract size info from metadata (nobkpt)
voxel_size = [info.PixelSpacing; info.SliceThickness]'
%read slice images; populate XYZ matrix
hWaitBar = waitbar(0,'Reading DICOM files');
for i=length(fnum):-1:1
fname = [prefix num2str(fnum(i)) ext];
D(:,:,i) = uint16(dicomread(fname));
waitbar((length(fnum)-i)/length(fnum))
end
delete(hWaitBar)
whos D
%% Visualization
%explore image data using Image Viewer GUI tool
i = 30; %middle slice
im = squeeze(D(:,:,i));
max_level = double(max(D(:)));
imview(im,[0 max_level])
%custom display - image data
fig1 = figure;
imshow(im,[0 max_level])
title('Coronal Slice #30')
set(fig1,'position',[601 58 392 314])
imview close all
%add intensity legend
colorbar
%change colormap
colormap jet
%3D visualization (doc: contourslice, isosurface & isocap)
docsearch('visualizing mri data')
%explore 3D volumetric data using Slice-O-Matic GUI tool (nobkpt)
addpath('D:\work\Demos\others\sliceomatic')
sliceomatic(double(D))
%ref: submission #780 @ www.mathworks.com/matlabcentral (nobkpt)
hSlico1 = gcf;
daspect(1./voxel_size)
movegui('northwest')
%reorient data for easier interpretation (stand patient up)
D = permute(D,[3 2 1]);
voxel_size = voxel_size([1 3 2]);
for i=1:3
D = flipdim(D,i);
%explore rotated 3D volume (new Slice-O-Matic viwer) - nobkpt
if ishandle(hSlico1), delete(hSlico1), end
hSlico2 = gcf;
set(hSlico2,'position',[455 63 560 420])
%intensity distribution also useful (more custom graphics)
%max_level = double(max(D(:)));
my_map = jet(max_level);
fig2 = figure;
%intensity distribution - top 2/3 (nobkpt)
subplot(3,1,1:2)
hist(double(im(:)),max_level)
axis([0 max_level 0 900])
title('Distribution')
%color scale - bottom 1/3 (nobkpt)
subplot(3,1,3)
imagesc(1:max_level)
colormap(my_map)
xlim([0 max_level])
set(gca,'ytick',[])
ylabel('Color Map')
xlabel('Intensity')
set(fig2,'position',[22 60 560 300],'render','zbuffer')
set(fig1,'position',[601 68 392 314])
figure(fig1)
%% Segmentation
%ignore low levels (backround air, CSF & other soft? tissues)
%using custom GUI tool to select best threshold level
im = imrotate(squeeze(D(30,:,:)),90);
figure(hSlico2)
%remove some figures (no longer needed) - nobkpt
if ishandle(fig1), delete(fig1), end
if ishandle(fig2), delete(fig2), end
doc graythresh
%custom GUI tool (nobkpt)
thresh_tool(im)
%duplicate original data set for later reference (nobkpt)
D1 = D;
%apply some thresholding rules to ignore certain parts of data
D(D=100) = 0; %ignore high levels (skull & other hard? tissues)
D(:,:,1:60) = 0; %ignore spatially low positions (below brain mass)
update_sliceomatic(double(D),hSlico2)
%erode away thick layer (dissolve thin surrounding tissues)
blk = ones([3 7 7]);
D = imerode(D,blk);
%isolate brain mass (bwlabeln)
doc bwlabel
lev = graythresh(double(im)/max_level) * max_level;
bw = (D>=lev);
L = bwlabeln(bw);
%connected region properties - how many, how big?
doc regionprops
stats = regionprops(L,'Area')
A = [stats.Area];
biggest = find(A==max(A))
%remove smaller scraps
D(L~=biggest) = 0;
%grow back main region (brian mass) - nobkpt
D = imdilate(D,blk);
%separate white vs. gray matter
lev2 = thresh_tool(im,'gray')
%partition brain mass (nobkpt)
lev2 = 67;
L = zeros(size(D)); %0=outside brain (head/air)
L(D0) = 2; %2=gray matter
L(D>=lev2) = 3; %3=white matter
%new Slice-O-Matic viewer (label matrix) - nobkpt
sliceomatic(L)
hSlico3 = gcf;
set(hSlico3,'position',[455 63 560 420])
%remove previous slicomatic viewer (nobkpt)
if ishandle(hSlico2), delete(hSlico2), end
%% Volumetric Measurements (voxel counting)
%total volume of brain (liters)
brain_voxels = length(find(L(:)>1));
brain_volume = brain_voxels*prod(voxel_size)/1e6
%volume of gray matter (liters) - nobkpt
gray_voxels = length(find(L(:)==2));
gray_volume = gray_voxels*prod(voxel_size)/1e6
%volume of white matter (liters) - nobkpt
white_voxels = length(find(L(:)==3));
white_volume = white_voxels*prod(voxel_size)/1e6
%density calculations (volume ratios) - nobkpt
gray_fraction = gray_volume/brain_volume
white_fraction = white_volume/brain_volume
return
%% Separate head from background for visualization (advanced maneuver)
%duplicate data
L1 = L;
%exterior of head (connected inside through ears)
%new Slice-O-Matic viewer (binary data) - nobkpt
BW = (D1
I can across this article 'Potential mechanisms connecting asthma,esophageal reflux, and obesity/sleep apneacomplex—A hypothetical review '. However, there is little information about the concept...
22 May 2017 4,236 2 View
I am interested in knowing different drug induced sedation endoscopy (DISE) classification system used regularly in clinical setting. Any published paper will be helpful.
21 February 2017 5,113 2 View
I am interested in knowing physiological classification systems/parameters for classifying the severity of sleep apnoea during drug induced sleep endoscopy. For example, how is blood oxygen level...
02 August 2016 115 4 View
I am interested in knowing the variation of laryngeal movement at rest and as CPAP is applied. I will like to know the difference between laryngeal movement in normals vs COPD patients and normals...
01 August 2016 1,852 3 View
Dear Prof. Piccin, Your project sounds very interesting and novel. I will like to ask what system will be used for capturing the three different dataset simultaneously? Many thanks, Esuabom
01 January 1970 1,082 2 View
When the entire neocortex is ablated in rodents, although they are still able to swim, all the limbs move continuously and asynchronously (Vanderwolf 2006; Vanderwolf et al. 1978). Normal animals...
03 August 2024 835 3 View
I am new to Micromechanics and having similar problem with understanding the implementation of the formula's. I would appreciate if anyone can guide me on how to go about getting a scalar value...
30 July 2024 969 0 View
Please, what is the memory consumption of the Matlab function quad tree decomposition procedure [S = qtdecomp(I)] with respect to the input set I?
27 July 2024 5,455 2 View
What is the thermal expansion coefficient of human muscle?
27 July 2024 7,190 0 View
Hello, I am a research scholar currently working on a project involving image segmentation, and I am interested in using differential evolution for this purpose . I would greatly appreciate it if...
25 July 2024 9,926 1 View
I am struggling to find a seeding density that will allow my cells to not aggregate together. Anything helps!
24 July 2024 3,460 1 View
Hello!!! I want to implement the Swerling characteristics functions (CF) directly in MATLAB without using its Fourier integral pairs...the Swerling CFs are actually Laplace Transform of the signal...
23 July 2024 4,925 1 View
Currently I need to calculate detection probabilities (PD) from radar cross section (RCS) data. Beta distribution parameters for this RCS data are calculated and will be used in Swerling0...
22 July 2024 868 0 View
Actually, I'm having trouble implementing the plot of the flutter region for the whirl prop system with 2 DOF (Influences of structural damping and propeller—pivot point distance on whirl flutter...
21 July 2024 5,047 2 View
I founde some textbooks stating that typical skeletal muscles can shorten up to 70% (optimally up to 30%) during contraction. However, I would like to look at muscles per region. This might seem...
21 July 2024 399 3 View