COMPGROUPS.NET | Search | Post Question | Groups | Stream | About | Register

### Skeleton of a volume (triangulated)

• Email
• Follow

```Hi all,

I want to get a skeleton of a 3D volume. I'm pretty sure I can do this in a round-about way, but I think there might be a shortcut.

The 3D volume I have is an STL file (think points connected in triangles or, say, the output from the isosurface() function) of a bifurcating tree (ie, imagine a tree trunk with some connected branches).

Here's one way that I think I can do:
1. Place a volume of points over my STL mesh.
2. Convert to a voxel volume (InPolyhedron on the fex will do this)
3. Run a 3D skeletonization on the voxel volume (http://www.mathworks.com/matlabcentral/fileexchange/4917-skeleton-in-3d will do this)

HOWEVER, I have this nagging suspicion that I can do it more simply *without* converting to voxels, and simply using the triangular mesh directly. My suspicion is that I can do some fancy work utilising MATLAB's DelaunayTri class along with the voronoiDiagram method. Reading through the help I can't quite tell if I'm on the right track or chasing down a red herring. Can someone more familiar with TriReps tell me:
A) Is it possible to do what I want?
B) What steps should I take?

For those that like test data to start from:
trep = TriRep(tet, X);
[tri Xb] = freeBoundary(trep);
myFV = struct('vertices',xf,'faces',tri); % This is my STL input
figure, patch(myFV,'EdgeColor','k','FaceColor','r','FaceAlpha',.5), axis image, view(3), camlight

Any ideas about how to reduce a volume like this to its basic skeleton? (ie, a representation with 4 lines running down each bar, and a (near to a) circle at the top and the base?

Thanks,
Sven.
```
 0

See related articles to this posting

```Sven:
Thanks for the test data. But it bombed:
??? Undefined function or variable 'xf'.
Error in =3D=3D> test at 16

Anyway, here is some code to get the medial surface of a 3D volume.
The algorithm is due to Steve Eddins of the imaging group at the
Mathworks:

% Start the timer.
[rows cols slices] =3D size(image3D);
tStart =3D tic;
% Compute the eroded 3D image because sometimes the particles touch.
SE =3D strel('ball', 1, 1, 0);
eroded3DImage =3D imerode(image3D, SE);

% Convert the volume so that the air=3D1 and the particles=3D0.
% 		image3D =3D 1 - image3D;

% Compute the 3D skeleton using ITK's routine.
% Commented out - didn't seem to work as expected.
% 		disp('Starting generation of 3D skeleton...');
% 		image3DSkeleton =3D ITKSkeleton(image3D);

%------------------------
% Compute the 3D skiz using Steve Eddins proposed method.
% There is a way of using a 3-D watershed transform that I think
matches closely your inflating balls metaphor.
% Specifically:
% 1.       Compute the distance transform of your 3-D blobs image
using bwdist.
%          (Fortunately, bwdist runs much faster and takes up less
memory for the multidimensional case in R2009b than in earlier
releases.)
% 2.       Compute the watershed transform of the distance transform
using watershed.
%          The zero-valued pixels in the output of watershed will be
at the interfaces between the inflated balls.
% I think this is what morphology people call the =93SKIZ,=94 or
=93skeleton by influence zones.=94  The interior of each inflated ball is
an =93influence zone.=94
% Okay, so here we go......
message =3D sprintf('Generating 3D distance transform on %d rows by %d
columns by %d slices 3D image...', rows, cols, slices);
disp(message);
set(handles.txtInfo, 'string', message);
try
%---- Compute the 3D Euclidean Distance Transform.
try
memory
edtImage3D =3D bwdist(eroded3DImage); % Calculate EDT
clear('eroded3DImage'); % Clear eroded3DImage to free up memory.
catch ME
errorMessage =3D sprintf('Error running bwdist()\nError Message:\n
%s', ME.message);
disp(errorMessage);
uiwait(warndlg(errorMessage, 'bwdist error', 'error'));
end
elapsedSeconds =3D toc(tStart);

%---- Compute the 3D watershed.
message =3D sprintf('\n%s took %.1f seconds\nGenerating 3D watershed
transform on %d rows by %d columns by %d slices 3D image...', message,
elapsedSeconds, rows, cols, slices);
disp(message);
set(handles.txtInfo, 'string', message);
try
memory
labeledImage =3D watershed_exp(edtImage3D, 6); % Calculate the
watershed.
% 				clear('edtImage3D'); % Clear edtImage3D to free up memory.
catch ME
errorMessage =3D sprintf('Error running watershed()\nError Message:\n
%s', ME.message);
disp(errorMessage);
uiwait(warndlg(errorMessage, 'watershed error', 'error'));
end
elapsedSeconds =3D toc(tStart);

%---- Get the pixels with a value of zero
message =3D sprintf('\n%s %.1f total seconds elapsed so far\nFinding
zero-value voxels on %d rows by %d columns by %d slices 3D image...',
message, elapsedSeconds, rows, cols, slices);
disp(message);
image3DSkeleton =3D (labeledImage =3D=3D 0);
clear('labeledImage'); % Clear labeledImage to free up memory.

As you can see, I originally tried a version from ITK but that didn't
work.  And take note that I called it the "medial surface" and not the
"skeleton."  Because in 3D the "skeleton" is not necessarily a thin
single pixel wide line - it can be a surface.  Imagine the space
between two flat walls.  If that were thinned down, you'd have a sheet
(surface) lying between the two walls, not a single line.

Steve's algorithm works well in my application where I wanted the
medial surface of the void space going between particles that are
suspended in a 3D volume.
Good luck,
-ImageAnalyst

```
 0
Reply imageanalyst (7622) 10/3/2010 5:59:47 PM

```Thanks ImageAnalyst.

Sorry about the bug. It was a typo that somehow always comes around when you paste in MATLAB code to a browser and then make the tiniest of changes :)  See below which is fixed.

My question was actually about a triangulated surface, but I am interested in your implementation for a 3D image input. As far as I can tell, the program you gave can be summarised as follows:
1. Calculate the bwdist() of your binary 3D image.
2. Create a labelled 3D watershed image
3. The ridges of the watershed (where label==0) is your skeleton.

I understand these steps in general, but I found that for the life of me, calling watershed on my distance image simply returns a label matrix full of ones. In your code, you're calling "watershed_exp". Is this a file exchange file, or should the standard IPT "watershed" function work just fine?

Thanks,
Sven.

% CREATE TRIANGULATED INPUT
trep = TriRep(tet, X);
[tri Xb] = freeBoundary(trep);
myFV = struct('vertices',xf,'faces',tri); % This is my STL input
figure, patch(myFV,'EdgeColor','k','FaceColor','r','FaceAlpha',.5), axis image, view(3), camlight

% CONVERT TO 3D BINARY IMAGE
bboxPts = [min(myFV.vertices,[],1);max(myFV.vertices,[],1)];
bboxDiff = ceil(diff(bboxPts));
xVec = linspace(bboxPts(1,1),bboxPts(2,1), 2*bboxDiff(1));
yVec = linspace(bboxPts(1,2),bboxPts(2,2), 2*bboxDiff(2));
zVec = linspace(bboxPts(1,3),bboxPts(2,3), 2*bboxDiff(3));
[xMat,yMat,zMat] = meshgrid(xVec,yVec,zVec);
normals = faceNormal(myFV.vertices, myFV.faces); % FEX function
in = InPolyedron(myFV.vertices,myFV.faces,normals, [xMat(:),yMat(:),zMat(:)]); % FEX
image3D = reshape(in,size(xMat));
% ALTERNATIVELY, LET'S JUST CREATE SAMPLE INPUT
image3D = false(100,100,100);
image3D(45:55,45:55,:) = true;
image3D(:,45:55,45:55) = true;
image3D(45:55,:,45:55) = true;

% CALCULATE SKELETON
edtImage3D = bwdist(~image3D);
labeledImage = watershed(edtImage3D);
unique(labeledImage(:)) % ans = 1

ImageAnalyst <imageanalyst@mailinator.com> wrote in message <2d36200d-8852-4286-8cc2-4ed4413aec9c@a36g2000yqc.googlegroups.com>...
> Sven:
> Thanks for the test data. But it bombed:
> ??? Undefined function or variable 'xf'.
> Error in ==> test at 16
>
> Anyway, here is some code to get the medial surface of a 3D volume.
> The algorithm is due to Steve Eddins of the imaging group at the
> Mathworks:
>
> 		% Start the timer.
> 		[rows cols slices] = size(image3D);
> 		tStart = tic;
> 		% Compute the eroded 3D image because sometimes the particles touch.
> 		SE = strel('ball', 1, 1, 0);
> 		eroded3DImage = imerode(image3D, SE);
>
> 		% Convert the volume so that the air=1 and the particles=0.
> % 		image3D = 1 - image3D;
>
> 		% Compute the 3D skeleton using ITK's routine.
> 		% Commented out - didn't seem to work as expected.
> % 		disp('Starting generation of 3D skeleton...');
> % 		image3DSkeleton = ITKSkeleton(image3D);
>
> 		%------------------------
> 		% Compute the 3D skiz using Steve Eddins proposed method.
> 		% There is a way of using a 3-D watershed transform that I think
> matches closely your inflating balls metaphor.
> 		% Specifically:
> 		% 1.       Compute the distance transform of your 3-D blobs image
> using bwdist.
> 		%          (Fortunately, bwdist runs much faster and takes up less
> memory for the multidimensional case in R2009b than in earlier
> releases.)
> 		% 2.       Compute the watershed transform of the distance transform
> using watershed.
> 		%          The zero-valued pixels in the output of watershed will be
> at the interfaces between the inflated balls.
> 		% I think this is what morphology people call the &#8220;SKIZ,&#8221; or
> &#8220;skeleton by influence zones.&#8221;  The interior of each inflated ball is
> an &#8220;influence zone.&#8221;
> 		% Okay, so here we go......
> 		message = sprintf('Generating 3D distance transform on %d rows by %d
> columns by %d slices 3D image...', rows, cols, slices);
> 		disp(message);
> 		set(handles.txtInfo, 'string', message);
> 		try
> 			%---- Compute the 3D Euclidean Distance Transform.
> 			try
> 				memory
> 				edtImage3D = bwdist(eroded3DImage); % Calculate EDT
> 				clear('eroded3DImage'); % Clear eroded3DImage to free up memory.
> 			catch ME
> 				errorMessage = sprintf('Error running bwdist()\nError Message:\n
> %s', ME.message);
> 				disp(errorMessage);
> 				uiwait(warndlg(errorMessage, 'bwdist error', 'error'));
> 			end
> 			elapsedSeconds = toc(tStart);
>
> 			%---- Compute the 3D watershed.
> 			message = sprintf('\n%s took %.1f seconds\nGenerating 3D watershed
> transform on %d rows by %d columns by %d slices 3D image...', message,
> elapsedSeconds, rows, cols, slices);
> 			disp(message);
> 			set(handles.txtInfo, 'string', message);
> 			try
> 				memory
> 				labeledImage = watershed_exp(edtImage3D, 6); % Calculate the
> watershed.
> % 				clear('edtImage3D'); % Clear edtImage3D to free up memory.
> 			catch ME
> 				errorMessage = sprintf('Error running watershed()\nError Message:\n
> %s', ME.message);
> 				disp(errorMessage);
> 				uiwait(warndlg(errorMessage, 'watershed error', 'error'));
> 			end
> 			elapsedSeconds = toc(tStart);
>
> 			%---- Get the pixels with a value of zero
> 			message = sprintf('\n%s %.1f total seconds elapsed so far\nFinding
> zero-value voxels on %d rows by %d columns by %d slices 3D image...',
> message, elapsedSeconds, rows, cols, slices);
> 			disp(message);
> 			image3DSkeleton = (labeledImage == 0);
> 			clear('labeledImage'); % Clear labeledImage to free up memory.
>
>
> As you can see, I originally tried a version from ITK but that didn't
> work.  And take note that I called it the "medial surface" and not the
> "skeleton."  Because in 3D the "skeleton" is not necessarily a thin
> single pixel wide line - it can be a surface.  Imagine the space
> between two flat walls.  If that were thinned down, you'd have a sheet
> (surface) lying between the two walls, not a single line.
>
> Steve's algorithm works well in my application where I wanted the
> medial surface of the void space going between particles that are
> suspended in a 3D volume.
> Good luck,
> -ImageAnalyst
>
```
 0
Reply sven.holcombe8218 (103) 10/11/2010 10:40:07 PM

```Bahaha... *still* left that typo:

myFV = struct('vertices',xf,'faces',tri); % This is my STL input
should be
myFV = struct('vertices',Xb,'faces',tri); % This is my STL input

"Sven" <sven.holcombe@gmail.deleteme.com> wrote in message <i903o7\$8hu\$1@fred.mathworks.com>...
> Thanks ImageAnalyst.
>
> Sorry about the bug. It was a typo that somehow always comes around when you paste in MATLAB code to a browser and then make the tiniest of changes :)  See below which is fixed.
>
> My question was actually about a triangulated surface, but I am interested in your implementation for a 3D image input. As far as I can tell, the program you gave can be summarised as follows:
> 1. Calculate the bwdist() of your binary 3D image.
> 2. Create a labelled 3D watershed image
> 3. The ridges of the watershed (where label==0) is your skeleton.
>
> I understand these steps in general, but I found that for the life of me, calling watershed on my distance image simply returns a label matrix full of ones. In your code, you're calling "watershed_exp". Is this a file exchange file, or should the standard IPT "watershed" function work just fine?
>
> Thanks,
> Sven.
>
>
> % CREATE TRIANGULATED INPUT
> trep = TriRep(tet, X);
> [tri Xb] = freeBoundary(trep);
> myFV = struct('vertices',xf,'faces',tri); % This is my STL input
> figure, patch(myFV,'EdgeColor','k','FaceColor','r','FaceAlpha',.5), axis image, view(3), camlight
>
> % CONVERT TO 3D BINARY IMAGE
> bboxPts = [min(myFV.vertices,[],1);max(myFV.vertices,[],1)];
> bboxDiff = ceil(diff(bboxPts));
> xVec = linspace(bboxPts(1,1),bboxPts(2,1), 2*bboxDiff(1));
> yVec = linspace(bboxPts(1,2),bboxPts(2,2), 2*bboxDiff(2));
> zVec = linspace(bboxPts(1,3),bboxPts(2,3), 2*bboxDiff(3));
> [xMat,yMat,zMat] = meshgrid(xVec,yVec,zVec);
> normals = faceNormal(myFV.vertices, myFV.faces); % FEX function
> in = InPolyedron(myFV.vertices,myFV.faces,normals, [xMat(:),yMat(:),zMat(:)]); % FEX
> image3D = reshape(in,size(xMat));
> % ALTERNATIVELY, LET'S JUST CREATE SAMPLE INPUT
> image3D = false(100,100,100);
> image3D(45:55,45:55,:) = true;
> image3D(:,45:55,45:55) = true;
> image3D(45:55,:,45:55) = true;
>
> % CALCULATE SKELETON
> edtImage3D = bwdist(~image3D);
> labeledImage = watershed(edtImage3D);
> unique(labeledImage(:)) % ans = 1
>
> ImageAnalyst <imageanalyst@mailinator.com> wrote in message <2d36200d-8852-4286-8cc2-4ed4413aec9c@a36g2000yqc.googlegroups.com>...
> > Sven:
> > Thanks for the test data. But it bombed:
> > ??? Undefined function or variable 'xf'.
> > Error in ==> test at 16
> >
> > Anyway, here is some code to get the medial surface of a 3D volume.
> > The algorithm is due to Steve Eddins of the imaging group at the
> > Mathworks:
> >
> > 		% Start the timer.
> > 		[rows cols slices] = size(image3D);
> > 		tStart = tic;
> > 		% Compute the eroded 3D image because sometimes the particles touch.
> > 		SE = strel('ball', 1, 1, 0);
> > 		eroded3DImage = imerode(image3D, SE);
> >
> > 		% Convert the volume so that the air=1 and the particles=0.
> > % 		image3D = 1 - image3D;
> >
> > 		% Compute the 3D skeleton using ITK's routine.
> > 		% Commented out - didn't seem to work as expected.
> > % 		disp('Starting generation of 3D skeleton...');
> > % 		image3DSkeleton = ITKSkeleton(image3D);
> >
> > 		%------------------------
> > 		% Compute the 3D skiz using Steve Eddins proposed method.
> > 		% There is a way of using a 3-D watershed transform that I think
> > matches closely your inflating balls metaphor.
> > 		% Specifically:
> > 		% 1.       Compute the distance transform of your 3-D blobs image
> > using bwdist.
> > 		%          (Fortunately, bwdist runs much faster and takes up less
> > memory for the multidimensional case in R2009b than in earlier
> > releases.)
> > 		% 2.       Compute the watershed transform of the distance transform
> > using watershed.
> > 		%          The zero-valued pixels in the output of watershed will be
> > at the interfaces between the inflated balls.
> > 		% I think this is what morphology people call the &#8220;SKIZ,&#8221; or
> > &#8220;skeleton by influence zones.&#8221;  The interior of each inflated ball is
> > an &#8220;influence zone.&#8221;
> > 		% Okay, so here we go......
> > 		message = sprintf('Generating 3D distance transform on %d rows by %d
> > columns by %d slices 3D image...', rows, cols, slices);
> > 		disp(message);
> > 		set(handles.txtInfo, 'string', message);
> > 		try
> > 			%---- Compute the 3D Euclidean Distance Transform.
> > 			try
> > 				memory
> > 				edtImage3D = bwdist(eroded3DImage); % Calculate EDT
> > 				clear('eroded3DImage'); % Clear eroded3DImage to free up memory.
> > 			catch ME
> > 				errorMessage = sprintf('Error running bwdist()\nError Message:\n
> > %s', ME.message);
> > 				disp(errorMessage);
> > 				uiwait(warndlg(errorMessage, 'bwdist error', 'error'));
> > 			end
> > 			elapsedSeconds = toc(tStart);
> >
> > 			%---- Compute the 3D watershed.
> > 			message = sprintf('\n%s took %.1f seconds\nGenerating 3D watershed
> > transform on %d rows by %d columns by %d slices 3D image...', message,
> > elapsedSeconds, rows, cols, slices);
> > 			disp(message);
> > 			set(handles.txtInfo, 'string', message);
> > 			try
> > 				memory
> > 				labeledImage = watershed_exp(edtImage3D, 6); % Calculate the
> > watershed.
> > % 				clear('edtImage3D'); % Clear edtImage3D to free up memory.
> > 			catch ME
> > 				errorMessage = sprintf('Error running watershed()\nError Message:\n
> > %s', ME.message);
> > 				disp(errorMessage);
> > 				uiwait(warndlg(errorMessage, 'watershed error', 'error'));
> > 			end
> > 			elapsedSeconds = toc(tStart);
> >
> > 			%---- Get the pixels with a value of zero
> > 			message = sprintf('\n%s %.1f total seconds elapsed so far\nFinding
> > zero-value voxels on %d rows by %d columns by %d slices 3D image...',
> > message, elapsedSeconds, rows, cols, slices);
> > 			disp(message);
> > 			image3DSkeleton = (labeledImage == 0);
> > 			clear('labeledImage'); % Clear labeledImage to free up memory.
> >
> >
> > As you can see, I originally tried a version from ITK but that didn't
> > work.  And take note that I called it the "medial surface" and not the
> > "skeleton."  Because in 3D the "skeleton" is not necessarily a thin
> > single pixel wide line - it can be a surface.  Imagine the space
> > between two flat walls.  If that were thinned down, you'd have a sheet
> > (surface) lying between the two walls, not a single line.
> >
> > Steve's algorithm works well in my application where I wanted the
> > medial surface of the void space going between particles that are
> > suspended in a 3D volume.
> > Good luck,
> > -ImageAnalyst
> >
```
 0
Reply sven.holcombe8218 (103) 10/12/2010 12:00:06 AM

```On Oct 11, 6:40 pm, "Sven" <sven.holco...@gmail.deleteme.com> wrote:
> Thanks ImageAnalyst.
> I understand these steps in general, but I found that for the life of me, calling watershed on my distance image simply returns a label matrix full of ones. In your code, you're calling "watershed_exp". Is this a file exchange file, or should the standard IPT "watershed" function work just fine?
---------------------------------------------------------------------------
Sorry about that.  watershed_exp() is a new experimental version of watershed that Steve was working on.  I'm not sure of the status of it, like if it made it into R2010b or not.  You'd have to contact him if you want it, as I wouldn't feel authorized to give it to you.
```
 0

4 Replies
618 Views

Similar Articles

12/13/2013 9:28:16 AM
page loaded in 5153 ms. (0)

Similar Artilces:

sub volume from a larger volume
hello - what is the easiest way to take a sub volume from a larger volume. The original data (M) is imported as a 100x4 matrix from a text file. The first three columns are for x, y, and z coordinates. Column 4 is the attribute for the given xyz location. For a 100 row matrix of non-ordered values I would like to generate Msub (49x49x89), i.e. the volume for x = 26:74, y = 26:74, z = 11:89: j = 0; for i = 1:100 if ((M(i,1) > 25) && (Mt(i,1) < 75)) && ((M(i,2) > 25) && (M(i,2) < 75))... && (M(i,3) > 10) && (M(i,3) < 90) % window t...

skeletons
Is there any clear documentation starting from the beginning, on emacs skeletons? I can't find skeleton.el on my system, but from reading other references about it, apparently it isn't very clear. None of the built-in documentation is, either.. it all reads like it is cataloging details for someone who already understands skeletons. Mike michaelmossey@yahoo.com wrote: > Is there any clear documentation starting from the beginning, on emacs > skeletons? > > I can't find skeleton.el on my system, but from reading other > references about it, apparently it isn'...

Concatenated volume in Solaris 9 Volume Manager
Solaris 9, 4-03, on Sparc, A1000 unit with two luns. I formed a concatenated volume with the command: metainit d25 2 1 /dev/dsk/c1t2d0s0 1 /dev/dsk/c1t2d1s0 and got the right answer. Could see the volume, write to it, etc. I added a similar line to /etc/lvm/md.tab and the following line in /etc/vfstab: /dev/md/dsk/d25 /dev/md/rdsk/d25 /raid ufs 1 no - On rebooting the machine the volume was not mounted - unfortunately I didn't save the error message but it was to the effect that /dev/md/dsk/d25 did not exist. The only way I could get it back was by doing a m...

logical volume name conflict in two volume group
Hello, I am a french computer technician, and i speak English just a little. On Aix 5.3, I encounter a name conflict logical volume on two volume group. The first volume lvnode01 is OK in rootvg and mounted. It is also consistent in the ODM root # lsvg -l rootvg |grep lvnode01 lvnode01 jfs2 32 64 2 open/syncd /users/node01 root # lslv lvnode01 LOGICAL VOLUME: lvnode01 VOLUME GROUP: rootvg LV IDENTIFIER: 00c7beec00004c00000001249820e29f.19 PERMISSION: read/write VG STATE: active/complete LV STATE: ...

C Program APIs or "ioctls" to access volume information created using Solaris Volume Manager
Hi, Are any C program APIs provided to know volumes and their information such as volume components, state, size created using Solaris Volume Manager. i'm not sure about API's but there's certainly libraries. try checking the opensolaris code since it's there. there's a metaioctl (...) but that seems related to meta_error.c. i notice that SUNWhea supplies /usr/include/meta.h which might help. i must confess that outside of rolling some home grown monitoring i'm not sure i see the value in it - isn't zfs the way forward these days? nelson.bensley@gmail.com w...

Wrapper Volume
What is the Wrapper Volume? What does it have to do with the mouse? Disk Warrior discovered a problem with the Wrapper Volume but was unable to correct the problem. Would this problem be corrected if the drive was formated? Lee Park Ridge, NJ rarebirdyatverizondotnet Lee <rarrebird_@verizon.net> wrote: > What is the Wrapper Volume? This is what Alsoft says about it: <http://askal.alsoft.com:591/FMPro?-db=askal&-lay=main&-sortfield=Date&-sortorder=descend&-op=eq&Date=12/18/2000&-format=askal-qa.html&-script=counter&-token=460&-S...

Skeleton question.
I'm beginning to think this problem is insurmountable. (define-skeleton tal-case-skel "Inserts a standard TAL/pTAL Labled Case -> statement skeleton." nil "CASE (" _ ") OF" > \n "BEGIN" > \n "-> !! \;" > \n "OTHERWISE -> \;" > \n "END\;" > \n ) This should result in Case () Of Begin -> !! ; Otherwise -> ; End; But insted, results in Case () Of Begin -> !! ; Otherwise -&g...

ipod volume
My mp3 player only goes up to 25 for volume setting which is fine in a quiet room but near traffic I have a hard time understanding the mp3. Does anyone know what the 25 would translate too on the shuffle or ipod modules. I'd like to buy a shuffle but only if the volume is higher goes upto like 50. Thanks, Chris In article <1128575806.457966.199860@o13g2000cwo.googlegroups.com>, <socialism001@yahoo.com> wrote: > My mp3 player only goes up to 25 for volume setting which is fine in a > quiet room but near traffic I have a hard time understanding the mp3. > Does an...

mirror volumes
There are three veritas volumes are created on one disk. If I want the volumes to have be redudant, is it a common way to mirror this disk to another disk? or I need to mirror echo volume to another disk one by one? How aboout the root disk? If it is encapuslated, and I need to create another boot disk, how to do it? mirror the whole disk to another disk, is it the normal way to do it? Thanks! Tim_bates@yahoo.com wrote: > There are three veritas volumes are created on one disk. If I want > the volumes to have be redudant, is it a common way to mirror this > disk to anothe...

Volume Works
You guys need to check out Volume Works. You can create, delete, shrink, and expand partitions all without loosing any of the data on them! Killer utility from SubRosaSoft.com If you need to repartition your drive it's great. You can even delete partitions then merge the unused one back into your other ones without loosing the data on the used partition. It helped me out a TON. Micromat is about to release Disk Studio (checked it out at MacWorld Expo) but it can't do 1/2 what Volume Works can do. Disk Studio can't merge partitions without loss of data, it can't s...

delaunay triangulation
can some one explain why to choose Delaunay triangulation for the segmentation of medical images, especially thermal images of breast cancer??can some one send the source code for this??? ...

volume visualization
my question is that I have a matrix for example ones(100,100,100), how can i show it in 3d view that the space be dividede 100X100X100 matrix by arrays of 1 ? > my question is that I have a matrix for example ones(100,100,100), how can i show it in 3d view that the space be dividede 100X100X100 matrix by arrays of 1 ? Your question doesn't make any sense to me as asked, but the entire list of Matlab 3D volume visualization functions is given in [1], accompanied by examples of their output. [1] http://www.mathworks.com/help/techdoc/ref/f16-8867.html#f16-7931 "mahdi roozbha...

Volume Analysis?
I have a set of 3D data points. I want to fit a surface to these points and calculate the enclosed volume. For example, find the best fit ellipsoid or sphere. Can someone point me in the direction of what algorithims are used and better yet, if matlab has any functions that can do this? Please just post here so everyone can benefit from the response. ...

Resize Volume
Just wonder when using vxresize to increase volume on a dedicated disk, some documentation metioned using "vxresize vol2 +100g alloc=DISKA", just wonder if using "vxresize vol1 +100g medianame" will also perform the same task? Then what is the difference? It seems that the vxresize man page doesn't mention the "alloc" option. Thanks for advice! bridge_xue@yahoo.com wrote: > Just wonder when using vxresize to increase volume on a dedicated disk, > some documentation metioned using "vxresize vol2 +100g alloc=DISKA", > just wonde...

The Unmountable Volume...
Hello all - I've got a problem I need some suggestions with. My setup: PowerMac g4/1.25 MDD 2 internal hard drives Each hard drive is partitioned, and on each drive, one of the partitions containins 10.3.9. I normally have one drive as my "main" boot drive. I use SuperDuper! to clone the main drive to the backup drive. It's been working well like this for over 3 years, but recently I've encountered problems when trying to dupe my main boot partition to my backup partition. Super Duper can't unmount the backup partition to "do the dupe". Same thing ...

Server volume
My job involves working in the server room at times. The server room consists of hundreds of server and at time trying to locate one of them among rows and rows of servers becomes a huge task in itself. I need to know whether there is a way to write a script which will let out a loud noise so as to aid in quicker identification. Thanks, Kevin. ...

skeleton newbie
For the following definitions (define-skeleton foobar "just testing" "" "foobar") (define-abbrev python-mode-abbrev-table "foo" "" 'foobar) if I type "foo" on a line that has nothing following point then it works as expected. if I type "foo" on a line that has something following point then the "rest" of the line goes to the next line and is indented to match what I just inserted (an implicit C-j). foo asdf ;; becomes foobar asdf Is there any way to supress this behavior or am I using this tool in...

podcast volume
My mp3 player only goes up to 25 for volume setting which is fine in a quiet room but near traffic I have a hard time understanding the mp3. Does anyone know what the 25 would translate too on the shuffle or ipod modules. I'd like to buy a shuffle but only if the volume is higher goes upto like 50. Thanks, Chris ...

sketch only skeleton
I wish to have a part file that only has sketches in it to be the driving skeleton file. But, when I start a new part file and insert the skeleton part file in, the sketch doesn't come through. If there a way to do this? A work around? Aaron As a matter of fact there is. Since a sketch is 2D you can extrude a surface(s) from it and get access to the geometry. A kludge, YES. Does it work, sure. Good candidate for an enhancement. Aaron wrote: > I wish to have a part file that only has sketches in it to be the > driving skeleton file. But, when I start a new part file and insert...

iPod volume on/off
I just got an iPod for Christmas. I can barely hear it and there doesn't appear to be an obvious way to 1. turn up the volume 2. turn it off . The instructions don't mention either of these options and the menuing is really confusing. Is there someplace on the web that explains how to do these 2 things with ILLUSTRATIONS or should I take it back and get something more user friendly? In article <1167401415.394594.88980@k21g2000cwa.googlegroups.com>, "ddog" <wgblackmon@yahoo.com> wrote: > I just got an iPod for Christmas. I can barely hear it and there > d...