انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 2 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
محاسبه همبستگی

محاسبه همبستگی

#1
Question 
سلام.من برنامه برای محاسبه همبستگی در تصویر رو می خوام
هم همبستگی بین R , G , B را دو به دو محاسبه کنه و هم در هر کدام جداگانه یعنی مثلا داخل R
راستی سایتتون خیلی خوبه ممنون فقط بعضی وقتا به سختی باز میشه
پاسخ

محاسبه همبستگی

#2
سلام دوست عزیز .
ممنون از لطف شما . Smile
اگر منظورتان از همبستگی (correlation) بین دو تصویر (دو ماتریس) ، محاسبه ضریب همبستگی (correlation coefficient) بین دو تصویر ، به صورت تنها یک عدد است ، باید از دستور corr2 استفاده کنید . اما اگر منظورتان محاسبه cross correlation است ، باید از دستور xcorr2 استفاده شود که البته نتیجه به صورت یک ماتریس خواهد بود .
برای دستور corr2 ، یک مثال می زنم :

کد:
clear all
close all
clc

your_image=imread('logo.jpg');
R=your_image(:,:,1);
G=your_image(:,:,2);
B=your_image(:,:,3);

R_G=corr2(R,G)
R_B=corr2(R,B)
B_G=corr2(B,G)

که باید نام تصویر برابر logo.jpg باشد . این تصویر ، پیوست شده است . نتیجه اجرای کد متلب بالا به صورت زیر می باشد :

کد:
R_G =

    0.4294


R_B =

   -0.4169


B_G =

   -0.2079

فکر می کنم منظورتان همین بود ، اما علاوه بر این ، می توانید نگاهی به دستورات filter2 و imfilter نیز بیندازید .
در ضمن ، لطفا بگویید کدام بخش از سایت به سختی باز میشه ، فقط انجمن اینطور هست یا کل سایت ؟ چند بار این اتفاق افتاده ؟ تا ببینم مشکل از چی هست . ممنون .


فایل‌های پیوست

عکس(ها)
   
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

محاسبه همبستگی

#3
(۱۳۹۲/۰۱/۰۶, ۰۱:۱۷ ق.ظ)admin نوشته: سلام دوست عزیز .
ممنون از لطف شما . Smile
اگر منظورتان از همبستگی (correlation) بین دو تصویر (دو ماتریس) ، محاسبه ضریب همبستگی (correlation coefficient) بین دو تصویر ، به صورت تنها یک عدد است ، باید از دستور corr2 استفاده کنید . اما اگر منظورتان محاسبه cross correlation است ، باید از دستور xcorr2 استفاده شود که البته نتیجه به صورت یک ماتریس خواهد بود .
برای دستور corr2 ، یک مثال می زنم :

کد:
clear all
close all
clc

your_image=imread('logo.jpg');
R=your_image(:,:,1);
G=your_image(:,:,2);
B=your_image(:,:,3);

R_G=corr2(R,G)
R_B=corr2(R,B)
B_G=corr2(B,G)

که باید نام تصویر برابر logo.jpg باشد . این تصویر ، پیوست شده است . نتیجه اجرای کد متلب بالا به صورت زیر می باشد :

کد:
R_G =

    0.4294


R_B =

   -0.4169


B_G =

   -0.2079

فکر می کنم منظورتان همین بود ، اما علاوه بر این ، می توانید نگاهی به دستورات filter2 و imfilter نیز بیندازید .
در ضمن ، لطفا بگویید کدام بخش از سایت به سختی باز میشه ، فقط انجمن اینطور هست یا کل سایت ؟ چند بار این اتفاق افتاده ؟ تا ببینم مشکل از چی هست . ممنون .

خوب من فرمول همبستگی بین باندهای مختف که می شه همون رنگها رو دارم گذاشتم تو پیوست
یعنی این دستور همبستگی متقابل همین کار رو انجام میده؟
حوصلم نشد دستی امتحان کنم ببینم جوابشون یکی هست یا نه گفتم اول بپرسم از شما اگه نمی دونستید بعد برم امتحان کنم (Big Grin)
راجع به سخت باز شدنم کلا سایت نمی اومد بالا مخصوصا هفته پیش با قند شکن هم به زور میومد بالا نمی دونم حالا مشکل از سایته یا من اینترنت من آخه سایتای دیگه خوب بودا


فایل‌های پیوست

عکس(ها)
   
پاسخ

محاسبه همبستگی

#4
امتحان کردم درست بود مرسی
حالا همبستگی هر کدوم از باندها چطوری میشه ؟
پاسخ

محاسبه همبستگی

#5
برای باندها ، دستوری که پیدا کردم ، دستور corrcoef می باشد که البته یک ماتریس را بر می گرداند .
توصیه می کنم برای این مورد ، حتما فرمول را چک کنید تا مطمئن شوید که صحیح است .
فرمولی که برای دستور corrcoef در help متلب ذکر شده ، به این صورت هست :


   
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

محاسبه همبستگی

#6
سلام. اگر ضریب همبستگی رو بین پیکسل های یک تصویر بخواهیم باید چه کار کرد.من اول ضریب همبستگی رو برای تصویر اصلی می خوام که باید عددی نزدیک1 باشه وبعد ضریب رو برای تصویر رمز شده می خوام که باید نزدیک 0 باشه.آیا در متلب تابعی برای این کار وجود داره یا نه؟
پاسخ

محاسبه همبستگی

#7
(۱۳۹۲/۰۴/۰۱, ۰۱:۵۸ ق.ظ)'saba' نوشته: سلام. اگر ضریب همبستگی رو بین پیکسل های یک تصویر بخواهیم باید چه کار کرد.من اول ضریب همبستگی رو برای تصویر اصلی می خوام که باید عددی نزدیک1 باشه وبعد ضریب رو برای تصویر رمز شده می خوام که باید نزدیک 0 باشه.آیا در متلب تابعی برای این کار وجود داره یا نه؟
 

سلام.
این مورد رو دارم بررسی می کنم، وقتی به نتیجه رسیدم، پاسخ رو همینجا می نویسم.
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

محاسبه همبستگی

#8
(۱۳۹۲/۰۴/۰۱, ۰۱:۵۸ ق.ظ)'saba' نوشته: سلام. اگر ضریب همبستگی رو بین پیکسل های یک تصویر بخواهیم باید چه کار کرد.من اول ضریب همبستگی رو برای تصویر اصلی می خوام که باید عددی نزدیک1 باشه وبعد ضریب رو برای تصویر رمز شده می خوام که باید نزدیک 0 باشه.آیا در متلب تابعی برای این کار وجود داره یا نه؟
 

سلام.
من در متلب جستجو کردم اما دستور خاصی برای این مورد پیدا نکردم. تنها موردی که به نظرم رسید این است که با دستور corrcoef همبستگی نقاط را نسبت به هم به دست آوریم که یک ماتریس با اندازه ماتریس اصلی به ما می دهد. سپس تمامی مقادیر این ماتریس را جمع کرده و تقسیم بر تعداد نقاط کنیم. با این روش، معیاری برای سنجش همبستگی نقاط تصویر خواهیم داشت.
کدهای متلب :

کد:
clear all
close all
clc

A=imread('image.png');
A=double(A);

B=corrcoef(A);
B(isnan(B))=0;

s=size(B);
sum=0;
for nn=1:s(1)
    for mm=1:s(2)
        sum=sum+B(nn,mm);
    end
end
sum;
final=sum/(s(1)*s(2))

سه خط اول برنامه متلب بالا، برای عدم تداخل برنامه با برنامه های متلبی است که قبلا اجرا شده اند.
با دستور imread یک تصویر با نام image.png را خوانده ایم و مقادیر آن را در متغیر A ذخیره کرده ایم.
با دستور double ، مقادیر A را به double تبدیل کرده ایم تا بعدا برای استفاده از دستور corrcoef به مشکل برنخوریم.
دستور corrcoef یک ماتریس را بر می گرداند که مقادیر آن، میزان همبستگی پیکسل های (نقاط) مختلف تصویر را به ما می دهد.
خط مربوط به دستور isnan ، مهم می باشد. وقتی ماتریس B ساخته می شود، تعدادی از عناصر آن دارای مقدار NaN (یک عدد نیست - Not a Number) خواهند بود زیرا مقادیر آنها به گونه ای می باشد (دارای ابهام) که متلب به جای آن، NaN در ماتریس قرار می دهد. بنابراین ما برای جمع کردن عناصر ماتریس B ، با مشکل وجود NaN روبرو می شویم. پس باید آنها را تبدیل به صفر کنیم. دستور isnan محل NaN ها را به ما می دهد و سپس با عبارتی که نوشته ایم، آنها را تبدیل به صفر می کنیم.
در ادامه برنامه، مجموع عناصر ماتریس B را در متغیر sum ذخیره می کنیم و سپس با تقسیم این مجموع بر تعداد عناصر ماتریس B ، عدد نهایی را در متغیر final ذخیره خواهیم کرد.
من این برنامه را برای یک تصویر اجرا کردم و نتیجه زیر به دست آمد :

کد:
final =

    0.2516

این شد معیاری برای سنجش همبستگی نقاط یک تصویر، البته من دیدم که در اینترنت معیارهای گوناگونی مطرح شده است اما اصول همه تقریبا یکسان است.
مثلا در جایی دیدم که چنین اطلاعاتی نمایش داده شده بود (البته روش به دست آوردن رو نگفته و تنها گفته که به این شکل هست) :

   

مشاهده می کنید که سه ضریب همبستگی برای جهت های افقی، عمودی و قطری و برای دو حالت تصویر به صورت معمولی (plain-image) و تصویر به صورت رمز شده (ciphered-image)، ذکر شده است.
لینک اون رو هم براتون میگذارم :

http://stackoverflow.com/questions/16095...-in-matlab
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط saba ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان