تالار گفتمان مانشت

نسخه‌ی کامل: متلب
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام
من یه پروژه دارم که تو اون باید چند تا عکس بگیرم و تعداد پیکسل های سفید هر یک را شمرده و در یک ماتریس ذخیره کنم می خواستم بدونم این کارو چطوری می تونم تو متلب انجام بدم. خیلی ضروری
با تشکر

خواهش می کنم یک نفر جواب بده
(19 خرداد 1395 07:51 ب.ظ)mina001 نوشته شده توسط: [ -> ]با سلام
من یه پروژه دارم که تو اون باید چند تا عکس بگیرم و تعداد پیکسل های سفید هر یک را شمرده و در یک ماتریس ذخیره کنم می خواستم بدونم این کارو چطوری می تونم تو متلب انجام بدم. خیلی ضروری
با تشکر

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

اگه فرض کنیم تصاویر شما خاکستری هستند، اون موقع کافیه حد خاصی(مثلا 200) برای سفید تعیین کنید و هر جا که ماتریس اون تصویر تون بیشتر از شد رو سفید فرض کنید.
اگه تصویرتون هم باینریه: سفید مقدار 1 رو میگیره و کافیه با دستور ساده متلب پیکسلهایی که مقدار 1 رو دارن پیدا کنید.
روش روتین
کد:
img = imread('ximagepixel140141_765.bmp');
[m n] = size(img);
count0 = 0;
count1 = 0;
for i = 1 : m
   for j = 1 : n
      if(img(i,j) == 0)
         count0 = count0 + 1;
      else
         count1 = count1 + 1;
      end
   end
end
fileID = fopen('out.txt','w');
fprintf(fileID, '%d\n', count0);
fprintf(fileID, '%d\n', count1);
fclose(fileID);

روش میانبر
کد:
img = imread('ximagepixel140141_765.bmp');
fileID = fopen('out.txt','w');
fprintf(fileID, '%d\n', sum(sum(img == 0)));
fprintf(fileID, '%d\n', numel(img) - sum(sum(img == 0)));
fclose(fileID);
[quote='gunnersregister' pid='406895' dateline='1465402221']
[quote='mina001' pid='406889' dateline='1465399319']
با سلام
من یه پروژه دارم که تو اون باید چند تا عکس بگیرم و تعداد پیکسل های سفید هر یک را شمرده و در یک ماتریس ذخیره کنم می خواستم بدونم این کارو چطوری می تونم تو متلب انجام بدم. خیلی ضروری
با تشکر

خواهش می کنم یک نفر جواب بده
[/quote]
تصاویر شما چه نوعی هستند؟ باینری(فقط سیاه و سفید)
خاکستری(طیف ۲۵۶ تایی بین سفید و سیاه)
رنگی

اگه فرض کنیم تصاویر شما خاکستری هستند، اون موقع کافیه حد خاصی(مثلا ۲۰۰) برای سفید تعیین کنید و هر جا که ماتریس اون تصویر تون بیشتر از شد رو سفید فرض کنید.
اگه تصویرتون هم باینریه: سفید مقدار ۱ رو میگیره و کافیه با دستور ساده متلب پیکسلهایی که مقدار ۱ رو دارن پیدا کنید.
[/quote]
باینری هست

[quote='behnam5670' pid='406904' dateline='1465406311']
روش روتین
کد:
img = imread('ximagepixel140141_765.bmp');
[m n] = size(img);
count0 = 0;
count1 = 0;
for i = 1 : m
   for j = 1 : n
      if(img(i,j) == 0)
         count0 = count0 + 1;
      else
         count1 = count1 + 1;
      end
   end
end
fileID = fopen('out.txt','w');
fprintf(fileID, '%d\n', count0);
fprintf(fileID, '%d\n', count1);
fclose(fileID);
ممنون
count0 تعداد پیکسل های سیاه هست و count1 سفید؟
برای 155 تصویر که من دارم باید دونه دونه آدرسشون رو بدم و تعداد پیکسل های سفید رو به دست بیارم و تو یه فایل اکسل ذخیره کنم و بعد به عنوان ورودی به شبکه عصبی بدم؟

این مقاله من ۳ تا متد داره
Method 1) Based on Foreground Pixels

Method 2) Based on Closed Foreground Pixels

Method 3) Based on Closed Foreground Pixels and Ratio of
Erosed Pixels over Foreground Pixels

اگه بتونین برای مراحل ۲و ۳ هم راهنمایی کنین ممنون میشم
(19 خرداد 1395 10:55 ب.ظ)mina001 نوشته شده توسط: [ -> ]این مقاله من ۳ تا متد داره
Method 1) Based on Foreground Pixels

Method 2) Based on Closed Foreground Pixels

Method 3) Based on Closed Foreground Pixels and Ratio of
Erosed Pixels over Foreground Pixels

اگه بتونین برای مراحل ۲و ۳ هم راهنمایی کنین ممنون میشم
برای ۱۵۵ تصویر که من دارم باید دونه دونه آدرسشون رو بدم و تعداد پیکسل های سفید رو به دست بیارم و تو یه فایل اکسل ذخیره کنم و بعد به عنوان ورودی به شبکه عصبی بدم؟

می تونید از یه کد ساده برای خوندن تموم عکسها استفاده کنید:
کد:
strPicture='scans\s';%\Documents\MATLAB
for i=1:10
    if(i<10)  
        str1Picture='0';
    else
        str1Picture='';
    end
    str2Picture=num2str(i);
    str3Picture='.jpg';
    AddressFinalPicture=[strPicture str1Picture str2Picture str3Picture];
Picture = imread(AddressFinalPicture);
end

این برنامه تموم عکسهای پوشه scans از مسیر \Documents\MATLAB
رو یکی یکی میخونه.

توضیحات بیشتری بدید که مراحل 1 تا 3 ازتون چی میخوان؟
(19 خرداد 1395 11:52 ب.ظ)gunnersregister نوشته شده توسط: [ -> ]توضیحات بیشتری بدید که مراحل ۱ تا ۳ ازتون چی میخوان؟

متد اول که تعداد پیکسل های سفید رو می شمره و به عنوان ورودی به شبکه عصبی داده میشه و با dataset groundtruth مقایسه میشه
متد دوم بعد از اینکه تصاویر رو close میکنیم تعداد پیکسل های سفید رو به دست می آوریم و مثل مرحله قبل مقایسه می کنیم

در متد سوم بعد از close کردن و بعد هم erosed کردن میاد تعداد پیکسل های سفید رو به دست میاره.

erosed کردن همون دستور open کردن هست؟؟



مقاله رو پیوست میکنم ممنون میشم کمکم کنید خیلی به کمکتون نیاز دارمم
یه دنیا ممنون
این کد تصویر ما رو close میکنه چیکار کنم که همه تصاویر رو باهم بخونه و تعداد پیکسل هایسفیدشون رو بشمره؟
کد:
P=imread('C:\Users\mina\Documents\MATLAB\Dataset\ximagepixels\ximagepixel140141_​765.BMP');
P=im2bw(P);
X=strel('diamond',4);
T=imclose(P,X);
subplot(1,2,1), imshow(P);
subplot(1,2,2), imshow(T);

این رو هم برای متد 3 نوشتم که اول تصاویر رو close میکنه بعد هم open ولی این کد فقط برای یک تصویر تعداد پیکسل ها رو میشمره حالا من اون کدی که گذاشته بودین برای خوندن تمام پیکسل ها کجای این کد بزارم که تمام تصاویر پوشه که 150 تا است رو باهم بخونه و تعداد پیکسل هاشونو بشمره و در یک فایل text ذخیره کنه؟
از راهنمایی هاتون بی نهایت ممنونم
کد:
clear all
close all
clc
P=imread('C:\Users\mina\Documents\MATLAB\Dataset\ximagepixels\ximagepixel140141_​765.BMP');
P=im2bw(P);
X=strel('diamond',4);
T=imclose(P,X);

P=im2bw(T);
X=strel('diamond',4);
A=imopen(T,X);

[m n] = size(A);
count0 = 0;
count1 = 0;
for i = 1 : m
   for j = 1 : n
      if(A(i,j) == 0)
         count0 = count0 + 1;
      else
         count1 = count1 + 1;
      end
   end
end
fileID = fopen('out.txt','w');
fprintf(fileID, '%d\n', count0);
fprintf(fileID, '%d\n', count1);
fclose(fileID);
(20 خرداد 1395 01:06 ق.ظ)mina001 نوشته شده توسط: [ -> ]متد اول که تعداد پیکسل های سفید رو می شمره و به عنوان ورودی به شبکه عصبی داده میشه و با dataset groundtruth مقایسه میشه
متد دوم بعد از اینکه تصاویر رو close میکنیم تعداد پیکسل های سفید رو به دست می آوریم و مثل مرحله قبل مقایسه می کنیم

در متد سوم بعد از close کردن و بعد هم erosed کردن میاد تعداد پیکسل های سفید رو به دست میاره.

erosed کردن همون دستور open کردن هست؟؟



مقاله رو پیوست میکنم ممنون میشم کمکم کنید خیلی به کمکتون نیاز دارمم
یه دنیا ممنون

در کل روشهایی که ازش اسم بردید برای Morphology تو تصاویر به کار میره.
مثلا
dilation برای پهنتر کردن
erosion برای نازک تر کردن.
opening که شامل یک مرحله dilation و بعد erosion هست و کاری که میکنه اینه که شکاف بین تصاویر رو باز میکنه.
closing که شامل یک مرحله erosion و بعد dilation هست و کاری که میکنه اینه که شکاف بین تصاویر رو کم میکنه.

هر کدومشون دستور خودشون رو تو متلب دارن.

imclose-imerode-imdilate-imopen
(20 خرداد 1395 02:58 ب.ظ)gunnersregister نوشته شده توسط: [ -> ]در کل روشهایی که ازش اسم بردید برای Morphology تو تصاویر به کار میره.
مثلا
dilation برای پهنتر کردن
erosion برای نازک تر کردن.
opening که شامل یک مرحله dilation و بعد erosion هست و کاری که میکنه اینه که شکاف بین تصاویر رو باز میکنه.
closing که شامل یک مرحله erosion و بعد dilation هست و کاری که میکنه اینه که شکاف بین تصاویر رو کم میکنه.

هر کدومشون دستور خودشون رو تو متلب دارن.

imclose-imerode-imdilate-imopen
میتو نیم برای closing کردن همون imclose رو بنویسیم به جای اینکه یک مرحله erosion و بعد dilation کنیم؟
منظورم اینه که پاسخ هر دو تاشون یکی هست؟
imclose =erosion +dilation
(20 خرداد 1395 04:09 ب.ظ)mina001 نوشته شده توسط: [ -> ]
(20 خرداد 1395 02:58 ب.ظ)gunnersregister نوشته شده توسط: [ -> ]در کل روشهایی که ازش اسم بردید برای Morphology تو تصاویر به کار میره.
مثلا
dilation برای پهنتر کردن
erosion برای نازک تر کردن.
opening که شامل یک مرحله dilation و بعد erosion هست و کاری که میکنه اینه که شکاف بین تصاویر رو باز میکنه.
closing که شامل یک مرحله erosion و بعد dilation هست و کاری که میکنه اینه که شکاف بین تصاویر رو کم میکنه.

هر کدومشون دستور خودشون رو تو متلب دارن.

imclose-imerode-imdilate-imopen
میتو نیم برای closing کردن همون imclose رو بنویسیم به جای اینکه یک مرحله erosion و بعد dilation کنیم؟
منظورم اینه که پاسخ هر دو تاشون یکی هست؟
imclose =erosion +dilation
بله پاسخ یکی هست.

بله اون دستور همون کار رو انجام میده. من اونو نوشتم که بگم closing چطور بدست میاد.
برای دستورات مورفولوژی قبلش باید یه ساختار(structure) درست کنید. اسمش رو بزارید B. این ساختار باید فررم خاصی داشته باشه. متلب خودش یه سری ساختار اماده داره. البته میتونید به کمک یه ماتریس 2 بعدی هم یه ساختار جدید بسازید.
مثلا
کد:
B=[1 1 1;1 1 1; 1 1 1];
B=[0 1 0; 1 1 1 ; 0 1 0];
بعدش با دستور زیر خروجی تصویر حاصل از عملیات مورفولوژی بدست میاد.

کد:
NewImage=imerode(image,B);
حالا تصویر حاصل از erosion داخل NewImage ذخیره شده. که میتونید ازش استفاده کنید.
جدول و نمودار مقاله
(19 خرداد 1395 08:40 ب.ظ)gunnersregister نوشته شده توسط: [ -> ]
(19 خرداد 1395 07:51 ب.ظ)mina001 نوشته شده توسط: [ -> ]با سلام
من یه پروژه دارم که تو اون باید چند تا عکس بگیرم و تعداد پیکسل های سفید هر یک را شمرده و در یک ماتریس ذخیره کنم می خواستم بدونم این کارو چطوری می تونم تو متلب انجام بدم. خیلی ضروری
با تشکر

خواهش می کنم یک نفر جواب بده
تصاویر شما چه نوعی هستند؟ باینری(فقط سیاه و سفید)
خاکستری(طیف ۲۵۶ تایی بین سفید و سیاه)
رنگی

اگه فرض کنیم تصاویر شما خاکستری هستند، اون موقع کافیه حد خاصی(مثلا ۲۰۰) برای سفید تعیین کنید و هر جا که ماتریس اون تصویر تون بیشتر از شد رو سفید فرض کنید.
اگه تصویرتون هم باینریه: سفید مقدار ۱ رو میگیره و کافیه با دستور ساده متلب پیکسلهایی که مقدار ۱ رو دارن پیدا کنید.
لینک مرجع