با سلام مجدد...
ببخشید یه سوالی از خدمتتون داشتم:اینکه چه جوری میشه در انتهای برنامه ،تمام نتایجی که از پارامترها برای تمام تصاویر بدست آوردیم رو توی یه جدول در متلب نمایش بدیم!!!؟من فقط تونستم با استفاده از دستور subplot با نمایش تصاویرشون نتایج رو نمایش بدم!!ویه سوال دیگه اینکه: در متلب امکانش هست با دادن یه تصویر، بشه گفت رنگش به چه صورت هست؟!! (منظورم اینه که بتونیم کدی بنویسیم که مشخص کنه دقیقا رنگ هندونه به چه صورت هست؟!!)
حالا حتما لازمه جدول کشیده بشه؟ نمیشه مثلا نتایج را برای داخل ورد و مرتب کنی؟
در مورد سوال دوم اگخ منظورتون اینه که رنگ غالب به دست بیاد می تونید هیستوگرام تصویر را به دست بیارید و مقداری که بیشترین تکرار را داره رنگ غالب تصویر محسوب میشه
میدونید اگه بشه توی اکسل مرتبش کرد خیلی بهتره!!ولی نمیدونم چه جوری باید این کار رو کرد!اگه توی اکسل نمیشه ،میشه توضیح بدید چه جوری میشه تو ورد نشونشون داد؟؟!
اما در مورد رنگ ،مثلا برای یک تصویر ،هیستوگرامش به صورت زیر شده!!منظورتون رو متوجه نمیشم که گفتید :(مقداری که بیشترین تکرار را داره رنگ غالب تصویر محسوب میشه).مثلا برای این هیستوگرام رنگ رو چه جوری میشه مشخص کرد؟؟
ضمیمه لینکش خرابه کار نمی کنه
hist.jpg تونستید ببینیدش؟اگه نشد،پس چه جوری نشونتون بدم!!!؟؟باید چی کار کرد؟
نمودارش منظورم نیست ببینید اول شما باید بتونید هندونه را استخراج کنید و فقط هیستوگرام اون جایی را به دست بیارید که شامل هندونه میشه
نمودار از روی یک سری اعداد تهیه میشه حالا توی این نمودار مقدار آخر بیشترین تکرار را داره
ببینید من از همون اول مشکل داشتم که چه جوری میشه هندونه رو از تصویر کلا جدا کرد!!؟و مگه برای رسم هیستوگرام نباید اول تصویر رو به فرمت خاکستری تبدیل کرد و بعد با استفاده از اون نمایشش داد!!پس اگه به این صورت باشه نمیشه با هیستوگرام با استفاده از شدت مقدار، رنگ رو مشخص کرد!!یا حتی اگه هیستوگرامش رسم شه دیگه اون شدت رنگ واقعی تصویر رو نشون نمیده!!!
ما با استفاده از انواع ترفندها تونستیم یک تصویر سیاه و سفید از هندونه ( منظورم که سطح هندونه سفید و بقیه سیاه) درست کنیم
حالا ما تصویر اصلی را می گیریم و می گیم هر چا که تصویر هندونه سیاه وسفید برابر 1 بود پیکسلهای هندونه را استخراج کن مثلا تصویر 3 رنگ برابر I باشه و هندونه سیاه و سفید هم I2 باشه
Ih=reshape(I,prod(size(I))/3,3);
Ih=Ih(logical(I2),:);
subplot(1,3,1),hist(Ih(:,1));
subplot(1,3,2),hist(Ih(:,2));
subplot(1,3,3),hist(Ih(:,3));
با جایگذاری imhist به جای hist سه تا هیستوگرام رسم شد.به نظرتون این دو کد با هم فرق دارن؟آخه وقتی از hist استفاده می کردم ،خطا میداد وچیزی نمایش نمیداد!به هرحال می خواستم بپرسم یعنی الان این سه نمودار نمایش شدت رنگ آبی و قرمز و سبز قسمت مربوط به هندونه هست؟ و این طوری با توجه به مقدار max هر مولفه نشون داده میشه که کدوم مولفه در تصویر فقط هندونه (منظورم همون هندونه جدا شده هست) بیشتر دخیل هست!!
[c,x]=imhist...
اینجا ببینید در کدوم x مقدار c برابر با حداکثر میشه
نمیدونم منظورتون دقیقا چی بود اما به صورت زیر که اجراش کردم در x=14 مقدار c حداکثر شد!!
[c,x]=imhist(Ih)
خب حالا یعنی چی شد!!میشه بیشتر توضیح بدید!
منظورتون اینه که اگه برای هر مولفه این کد رو بزنیم برای هر یک x یه مقدار c بدست میاد و باید برای هرمولفه ، x ای رو در نظر گرفت که در آن مقدار c حداکثر شده باشه!!اینطوری اون سه تا x ای که میگید بدست میاد؟
الان چه جوری این سه تا x رو باید ترکیب کرد تا رنگ غالبی که میگید مشخص شه!!؟ویا اینکه فقط میتونیم با توجه به مقدار c مولفه ای که از دو مقدار دیگه بیشتر هست ،بگیم مثلا رنگ غالب این هندونه سبز هست!!!؟
شرمنده ! نگفتید بالاخره این سه نمودار نمایش شدت رنگ آبی و قرمز و سبز قسمت مربوط به" فقط هندونه "هست؟
و راجع به اون اکسل یا وردی که مد نظرتون هست میشه توضیح بدید؟!!
الان شما سه تا x تولید کردید مثلا به نام x1,x2,x3 حالا یه تصویر مثلا 20در 20 ازا ین رنگ درست کنید و نشون بدید
img=uint8(ones(20,20,3));
img(:,:,1)=img(:,:,1)*x1;
img(:,:,2)=img(:,:,2)*x2;
img(:,:,3)=img(:,:,3)*x3;
imshow(img)
یک ماتریس هم که بخواهید ذخیره کنید که در اکسل باز بشه مثلا اسم ماتریس ما m باشه
dlmwrite('file.csv',m);
ببخشید برای اینکه بخوایم در نمودار هیستوگرام ، x مربوط به حداکثر مقدار c رو پیدا کنیم،باید دقیقا از چه کدی استفاده کنیم؟
اجراش کردم ولی خطای زیر رو میده!!Error: ()-indexing must appear last in an index expression.
ممنون!جواب داد.
سلام.وقتتون بخیر.
میشه در مورد این برنامه توضیح بدید؟من ی پروژه تشخیص تومور دارم ک این برنامه قسمتی از اون هستش.متاسفانه من با متلب آشنایی ندارم.زود جواب بدید ممنون میشم.
منظورم این برنامه س.
close all
clc
clear all
fontSize = 13;
p=imread('8.jpg');
v = rgb2gray(p);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
hy = fspecial('sobel');
hx = hy';
Iy = imfilter(double(v), hy, 'replicate');
Ix = imfilter(double(v), hx, 'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
L = watershed(gradmag);
Lrgb = label2rgb(L);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
se = strel('disk', 50);
Io = imopen(v, se);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ie = imerode(v, se);
Iobr = imreconstruct(Ie, v);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ioc = imclose(Io, se);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Iobrd = imdilate(Iobr, se);
Iobrcbr = imreconstruct(imcomplement(Iobrd),imcomplement(Iob r));
Iobrcbr = imcomplement(Iobrcbr);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fgm = imregionalmax(Iobrcbr);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I2 = v;
I2(fgm) = 255;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
se2 = strel(ones(5,5));
fgm2 = imclose(fgm, se2);
fgm3 = imerode(fgm2, se2);
fgm4 = bwareaopen(fgm3, 20);
I3 = v;
I3(fgm4) = 255;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bw = im2bw(Iobrcbr, graythresh(Iobrcbr));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bw=~bw;
figure, subplot(1,1,1);
imshow(bw), title('tasvire baynere shodeh')