رفتن به مطلب

خواندن و تحلیل تصاویر mri در متلب


ارسال های توصیه شده

سلام من یه سری تصاویر با پسوند .mhd و .raw دارم میخوام تو متلب باز کنم

زهرا خانم گفت:

تو فایل پروژه تشخیص تومور در تصاویر سی تی اسکن کبد با نرم افزار متلب و دانلودکنم، دو

تا فایل متلب با اسمای mha_read_header.m و mha_read_volume.m بردارم به همراه تصاویرت کپی کنم تو مسیری که میخوای پروژم بنویسم. بعد دستور زیر تو پنجره Cammand بنویسم:

I = mha_read_volume('imagename.mhd

 

این کد میگه که تصویری با پسوند mhd رو برام بخون و توی متغیر I ذخیره کن.

حالا مرحله بعدی نمایش این تصویر هست. اگه تو فایلای دانلود شده رو ببینی دو تا فایل با اسامی slicer.m و slicer.fig می بینی اونا رو هم تو مسیر قیلی کپی من. اگر دستور زیر رو بنویسی فایل تصویر رو بهتون نشون میده.

کد:

 

Slicer(I);

 

من این کارو که انجام میدم بهم خطا میده.

 

خطاش اینه

 

 

??? Invalid field name: ''.

Error in ==> mha_read_header at 78

info.(type)=data;

Error in ==> mha_read_volume at 13

if(~isstruct(info)), info=mha_read_header(info); end

لینک به دیدگاه
سلام من یه سری تصاویر با پسوند .mhd و .raw دارم میخوام تو متلب باز کنم

زهرا خانم گفت:

تو فایل پروژه تشخیص تومور در تصاویر سی تی اسکن کبد با نرم افزار متلب و دانلودکنم، دو

تا فایل متلب با اسمای mha_read_header.m و mha_read_volume.m بردارم به همراه تصاویرت کپی کنم تو مسیری که میخوای پروژم بنویسم. بعد دستور زیر تو پنجره Cammand بنویسم:

I = mha_read_volume('imagename.mhd

 

این کد میگه که تصویری با پسوند mhd رو برام بخون و توی متغیر I ذخیره کن.

حالا مرحله بعدی نمایش این تصویر هست. اگه تو فایلای دانلود شده رو ببینی دو تا فایل با اسامی slicer.m و slicer.fig می بینی اونا رو هم تو مسیر قیلی کپی من. اگر دستور زیر رو بنویسی فایل تصویر رو بهتون نشون میده.

کد:

 

Slicer(I);

 

من این کارو که انجام میدم بهم خطا میده.

 

خطاش اینه

 

 

??? Invalid field name: ''.

Error in ==> mha_read_header at 78

info.(type)=data;

Error in ==> mha_read_volume at 13

if(~isstruct(info)), info=mha_read_header(info); end

 

سلام

فکر کنم یه فایل هدر hdr. هم می خواد، برای زهرا خانوم یه img. هم داشت، فایل ها کامل هست؟

می تونی یه سریش رو اینجا قرار بدی (فایل های یه تصویر منظورم هست)؟

لینک به دیدگاه

خانوم simin asefi عزیز شما تو قسمت I = mha_read_volume('imagename.mhd) به جای imagename باید اسم تصویری که فرمت mhd داره رو بنویسن آیا این کارو انجام دادین؟

همونطور هم که آقا ایمان گفتن احتمالا فایل هدر هم میخواد.

لینک به دیدگاه

مرسی زهرا خانم

همین کارو کردم

تصاویر نشون میده

فقط دو تا تصویر نشون میده یکیش خود تصویر هستش

اون یکی یه نقطه سفید تو یه صفخه سیاه که برا هر عکس جاش تو صفحه فرق میکنه اون چیه؟

لینک به دیدگاه

خانومی، من این تصویرت رو دانلود کردم؛ اما برام با خطا اجرا میشه!

به احتمال زیاد تصاویر مکملی مثل .raw یا امثال این رو باید داشته باشه. اگه دارید لطفا اونا رو هم اینجا قرار بدید.

ممنون:icon_gol:

لینک به دیدگاه

آره داره الان اونم میذارم

فقط فایل slicer که تو پروژتون گذاشتین کارش چیه؟

http://s5.picofile.com/file/8143396300/Case00.mhd.html

http://s5.picofile.com/file/8143396426/Case00.raw.html

لینک به دیدگاه

این یه تابع هستش که کارش نمایش تصاویر سه بعدی هستش. روش های دیگه ای هم برای نمایش تصاویر سه بعدی وجود داره که اگه تو سایت سرچ بزنین می تونین رموردشون بخونین.

لینک به دیدگاه
خانومی الان که دوباره ران کردم، برام فقط یه تصویر سه بعدی نشون میده که 20 تا اسلایس داره و ابعادش هم 320*320 هستش.

 

 

 

 

شما چجوری اجرا می کنین؟

میشه مرحله به مرحله برام بگین

برا من ابعاد نشون نمیده

ممنون

لینک به دیدگاه
شما چجوری اجرا می کنین؟

میشه مرحله به مرحله برام بگین

برا من ابعاد نشون نمیده

ممنون

سلام

ببین عزیز شما هم میتونی از طریق کد زیر ابعاد و مشخصات رو ببینی


>> I=mha_read_header('Case00.mhd')

I =

Filename: 'Case00.mhd'
Format: 'MHA'
CompressedData: 'false'
ObjectType: 'image'
NumberOfDimensions: 3
BinaryData: 'true'
ByteOrder: 'false'
TransformMatrix: [1 0 0 0 1 0 0 0 1]
Offset: [-112.8070 -114.0130 -86.4137]
CenterOfRotation: [0 0 0]
AnatomicalOrientation: 'RAI'
PixelDimensions: [0.6250 0.6250 3.6000]
[color=#ff0000]Dimensions: [320 320 20][/color]
DataType: 'short'
DataFile: 'Case00.raw'
BitDepth: 16
HeaderSize: 337

>> I = mha_read_volume('Case00.mhd');
>> slicer(I);

هم اگه موس رو روی تصویر بچرخونی میتونی ابعادش رو ببینی.

اینم از تصویری که برا من باز میشه. و داره اسلایس 10 ام رو نمایش میده.

 

elzhhjckl2sphgkwewf0.jpg

 

لینک به دیدگاه

سلام زهرا جان

تا اینجا درست ابعاد و اسلایس نشون میده

نمیدونم چرا slicerبرا من جواب نمیده

slicer این خطاها رو میده

??? Error using ==> slicer>slicer_OpeningFcn at 219

First argument of "slicer" should be either an image or a string

Error in ==> gui_mainfcn at 221

feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});

Error in ==> slicer at 128

gui_mainfcn(gui_State, varargin{:});

عنوان پنجرم Unknown Image هستش

لازم نیست تصویر تغییر بدم؟

مثلا سگمنتشن . . .

لینک به دیدگاه

سلام،

نه عزیز لازم نیس تغییری تو تصویر ایجاد کنید.

میشه کدی که مینوسی رو بزاری اینجا ببینیم؟

شما به جای استفاده از slicer میتونی از قطعه کد زیر هم برای نمایش اسلایسای تصویرت استفاده کنید.


I = mha_read_volume('Case00.mhd');
for i=1:size(I,3)
imshow(squeeze(I(:,:,i)),[]);
title(i);
pause()
end

لینک به دیدگاه

مرسییییی زهرا جون :icon_gol::icon_gol::icon_gol::icon_gol::icon_gol::icon_gol::icon_gol: :hapydancsmil::hapydancsmil:

حل شد

هم با این کد جدید جواب داد هم با دستور slicer(I): :w16::w16:

هم با slicer.m :w16::w16:

میدونی مشکلم چی بود بجا Read_volume از Read_header استفاده میکردم :a030::a030:

متلبم چه ایرادایی میگیره؟؟؟؟!!!!

ولی بقول علی صادقی تو عمقش که میری متلبم شیرینه

لینک به دیدگاه

بازم سلام

دوستان من میخوام رو تصاویرم سگمنتیشن انجام بدم

با کدای زیر میتونم قطعه بندی کنم اما میخوام برای تابع تعریف کنم

نمیدونم خروجی تابع چی باید باشه واینکه طبق معمول خطا میده.

کسی کمکم میکنه؟؟؟؟

>> clear all;
>> close all;
>> I=imread(\آدرس تصویر);
>> bg=imopen(I,strel('disk',15));
>> figure;surf(double(bg(1:8:end,1:8:end))),zlim([0 255]);set(gca,'ydir','reverse');
>> I2=I-bg;
>> I3=imadjust(I2);
>> figure;imshow(I2);
>> level=graythresh(I3);
>> bw=im2bw(I3,level);
>> bw=bwareaopen(bw,50);
>> w=[2 -1 -1;-1 2 -1; -1 -1 2];
>> g=imfilter(double(I2),w);
>> h=fspecial('sobel');
>> Id=double(I2);
>> g=sqrt(imfilter(Id,h,'replicate').^2+imfilter(Id,h,'replicate').^2);
>> g2=imclose(imopen(g,ones(3,3)),ones(3,3));
>> L2=watershed(g2);
>> wr2=L2==0;
>> f=I2;
>> f(wr2)=255;
>> figure;imshow(f);
>> figure;imshow(I2);
>> figure;imshow(f);
>> rm=imregionalmin(g);
>> rm=imregionalmin(I2);
>> imshow(I2);

لینک به دیدگاه
بازم سلام

دوستان من میخوام رو تصاویرم سگمنتیشن انجام بدم

با کدای زیر میتونم قطعه بندی کنم اما میخوام برای تابع تعریف کنم

نمیدونم خروجی تابع چی باید باشه واینکه طبق معمول خطا میده.

کسی کمکم میکنه؟؟؟؟

 

سلام

کدتون رو توی یه mfile بنویسین دیگه، خط به خط که اجرا نمی کنن. اول به صورت عادی بنویسین، هر موقع جواب مورد نظر رو گرفتین، بعد تبدیل به تابع کنینش، چون واسه تابع به workspaceش دسترسی نداریم، چک کردن مقادیر متغیرها مشکل تر ها، به صورت تابع نباشه راحت تر میشه کد رو فهمید و مشکلش رو حل کرد.

تصویر ورودی هم اگه ممکنه قرارش بدین، کدتون رو هم بگین چه اروری میده.

ممنون:a030:

لینک به دیدگاه
سلام

کدتون رو توی یه mfile بنویسین دیگه، خط به خط که اجرا نمی کنن. اول به صورت عادی بنویسین، هر موقع جواب مورد نظر رو گرفتین، بعد تبدیل به تابع کنینش، چون واسه تابع به workspaceش دسترسی نداریم، چک کردن مقادیر متغیرها مشکل تر ها، به صورت تابع نباشه راحت تر میشه کد رو فهمید و مشکلش رو حل کرد.

تصویر ورودی هم اگه ممکنه قرارش بدین، کدتون رو هم بگین چه اروری میده.

ممنون:a030:

 

 

 

سلام تصاویر همون دوتان که قبلا گذاشتم

کدای زیر ارور ندارن اما دوتا مشکل هست

اولا اینکه نمیدونم قطعه بندی درست انجام شده یانه

ودوم اینکه برا نمایش باید از imshoe() استفاده کنم؟

اگه آره ارور میده.

[left]I = mha_read_volume('Case00.mhd');
bg=imopen(I,strel('disk',15));
figure;surf(double(bg(1:8:end,1:8:end))),zlim([0 255]);set(gca,'ydir','reverse');
I2=I-bg;
level=graythresh(I);
w=[2 -1 -1;-1 2 -1; -1 -1 2];
g=imfilter(double(I2),w);
h=fspecial('sobel');
Id=double(I2);
g=sqrt(imfilter(Id,h,'replicate').^2+imfilter(Id,h,'replicate').^2);
g2=imclose(imopen(g,ones(3,3)),ones(3,3));
L2=watershed(g2);
wr2=L2==0;
f=I2;
f(wr2)=255;
rm=imregionalmin(g);
rm=imregionalmin(I2);
im=imextendedmin(I2,2);
fim=I2;
fim(im)=175;
Lim=watershed(bwdist(im));
em=Lim==0;
g2=imimposemin(I2,im);
L2=watershed(g2);
I2=I;
I2=(L2==0);


[/left]

اینم ارور دستور imshow

[color=#ff0000]
[/color]
[left][color=#ff0000]??? Error using ==> imageDisplayValidateParams>validateCData at 114
Unsupported dimension
Error in ==> imageDisplayValidateParams at 31
common_args.CData = validateCData(common_args.CData,image_type);
Error in ==> imageDisplayParseInputs at 79
common_args = imageDisplayValidateParams(common_args);
Error in ==> imshow at 199
[common_args,specific_args] = ...[/color]
[/left]

لینک به دیدگاه
سلام تصاویر همون دوتان که قبلا گذاشتم

کدای زیر ارور ندارن اما دوتا مشکل هست

اولا اینکه نمیدونم قطعه بندی درست انجام شده یانه

ودوم اینکه برا نمایش باید از imshoe() استفاده کنم؟

اگه آره ارور میده.

[left]I = mha_read_volume('Case00.mhd');
bg=imopen(I,strel('disk',15));
figure;surf(double(bg(1:8:end,1:8:end))),zlim([0 255]);set(gca,'ydir','reverse');
I2=I-bg;
level=graythresh(I);
w=[2 -1 -1;-1 2 -1; -1 -1 2];
g=imfilter(double(I2),w);
h=fspecial('sobel');
Id=double(I2);
g=sqrt(imfilter(Id,h,'replicate').^2+imfilter(Id,h,'replicate').^2);
g2=imclose(imopen(g,ones(3,3)),ones(3,3));
L2=watershed(g2);
wr2=L2==0;
f=I2;
f(wr2)=255;
rm=imregionalmin(g);
rm=imregionalmin(I2);
im=imextendedmin(I2,2);
fim=I2;
fim(im)=175;
Lim=watershed(bwdist(im));
em=Lim==0;
g2=imimposemin(I2,im);
L2=watershed(g2);
I2=I;
I2=(L2==0);


[/left]

اینم ارور دستور imshow

[color=#ff0000]
[/color]
[left][color=#ff0000]??? Error using ==> imageDisplayValidateParams>validateCData at 114
Unsupported dimension
Error in ==> imageDisplayValidateParams at 31
common_args.CData = validateCData(common_args.CData,image_type);
Error in ==> imageDisplayParseInputs at 79
common_args = imageDisplayValidateParams(common_args);
Error in ==> imshow at 199
[common_args,specific_args] = ...[/color]
[/left]

 

راستش این تابع هایی که استفاده کردین، مثل watershed و imimposemin رو نمیشناسم، نمی دونم چیکار می کنه. از روی خروجیش باید بررسی کنین، دیگه.

 

در مورد imshow هم همون حالتی که برای نمایش عکس ورودی تون زهرا خانوم گفتن، برای تصاویر بدست آمده هم باید از همون روش ها استفاده کنین، imshow فقط برای تصاویر باینری، Grayscale و RGB می تونه استفاده بشه.

لینک به دیدگاه
راستش این تابع هایی که استفاده کردین، مثل watershed و imimposemin رو نمیشناسم، نمی دونم چیکار می کنه. از روی خروجیش باید بررسی کنین، دیگه.

 

در مورد imshow هم همون حالتی که برای نمایش عکس ورودی تون زهرا خانوم گفتن، برای تصاویر بدست آمده هم باید از همون روش ها استفاده کنین، imshow فقط برای تصاویر باینری، Grayscale و RGB می تونه استفاده بشه.

سلام.

 

الگوریتم واترشد یا الگوریتم آب پخشان یه نوع الگوریتم قطعه بندی هست و بر اساس شدت پیکسل ها میاد گروه بندیشون می کنه.

 

.......................

imimposemin هم فکر می کنم برای عملیات مورفولوژیک بکار میره، من ازش استفاده نکردم:

 

http://books.google.com/books?id=NoJ15jLdy7YC&pg=PT252&lpg=PT252&dq=imimposemin&source=bl&ots=er-kyIHk-A&sig=3HilXIFyWaQQjAfZbSRGrklXOVE&hl=en&sa=X&ei=pe0uVNjiEcTR7Qbx94FI&ved=0CFcQ6AEwCA#v=onepage&q=imimposemin&f=false

لینک به دیدگاه
سلام.

 

الگوریتم واترشد یا الگوریتم آب پخشان یه نوع الگوریتم قطعه بندی هست و بر اساس شدت پیکسل ها میاد گروه بندیشون می کنه.

 

.......................

imimposemin هم فکر می کنم برای عملیات مورفولوژیک بکار میره، من ازش استفاده نکردم:

 

http://books.google.com/books?id=NoJ15jLdy7YC&pg=PT252&lpg=PT252&dq=imimposemin&source=bl&ots=er-kyIHk-A&sig=3HilXIFyWaQQjAfZbSRGrklXOVE&hl=en&sa=X&ei=pe0uVNjiEcTR7Qbx94FI&ved=0CFcQ6AEwCA#v=onepage&q=imimposemin&f=false

 

پس با این حساب استفاده از واترشد نباید درست باشه.

درسته؟

اصلا برا تحلیل به قطعه بندی نیاز هست؟

یا فقط باید خطوط و لبه و نقاط و مرز شناسایی بشه؟

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...