ورود

View Full Version : پردازش تصویر



ehsan_yganeh88
سه شنبه 23 تیر 1394, 23:00 عصر
با سلام
من یه تصویر باینری دارم می خوام مختصات نقاط 1 پیدا کنم، بعد اون مختصات و بندازم رو یه تصویر دیگه، ممنون میشم کمکم کنید

rahnema1
سه شنبه 23 تیر 1394, 23:38 عصر
با سلام
من یه تصویر باینری دارم می خوام مختصات نقاط 1 پیدا کنم، بعد اون مختصات و بندازم رو یه تصویر دیگه، ممنون میشم کمکم کنید

سلام
مثلا دو تا تصویر داریم که هم اندازه هستند اولی به نام A که باینری هست و می خواهیم پیکسلهای متناظر تصویر B هم یک کنیم


index = find(A == 1);
B(index) = 1;

یا به صورت زیر

B(logical(A)) = 1;

ehsan_yganeh88
چهارشنبه 24 تیر 1394, 16:32 عصر
خیلی ممنون از راهنماییتون، حالا من می خوام بدونم می تونم آیا نقاطی که تصویر 1 هست مختصات شو بصورت ماتریس بدست بیارم، که اون قسمت و از یه تصویر دیگه کات کنم؟

rahnema1
چهارشنبه 24 تیر 1394, 18:59 عصر
خیلی ممنون از راهنماییتون، حالا من می خوام بدونم می تونم آیا نقاطی که تصویر 1 هست مختصات شو بصورت ماتریس بدست بیارم، که اون قسمت و از یه تصویر دیگه کات کنم؟

منظورتون چیه که می خواهید کات کنید ؟
الان ما اندیس یا مختصات را داریم که درindex ذخیره شده با این اندیس هر کاری می شه کرد

ehsan_yganeh88
چهارشنبه 24 تیر 1394, 20:12 عصر
مثلا من می خوام مختصات یه دایره از تصویر اول که 1 هست و داشته باشم بعد همون مختصات و بندازم رو تصویر دوم اون دایره از توش در بیارم

rahnema1
چهارشنبه 24 تیر 1394, 21:27 عصر
یه تصویر خالی (سیاه) به نام C درست مسی کنیم همون قسمت دایره ای را که در A برابر 1 بود را از B بیرون آورده و در C قرار می دهیم(هر سه تصویر هم اندازه هستند)

C = zeros(size(A));
index = find(A == 1);
C(index) = B(index);

ehsan_yganeh88
چهارشنبه 24 تیر 1394, 21:46 عصر
ممنونم از راهنماییتون

rahnema1
چهارشنبه 24 تیر 1394, 22:03 عصر
این جور هم می شه

C = A .* B;

ehsan_yganeh88
چهارشنبه 24 تیر 1394, 22:35 عصر
مرسی به نتیجش رسیدم،
یه سوال دیگه هم داشتم، اینکه من می خوام یه تصویرو تقسیم کنم مثلا به 4 یا 8 تیکه،
یه سوال دیگه چه جوری می شه با شما تماس گرفت

rahnema1
چهارشنبه 24 تیر 1394, 22:51 عصر
با اندیس به آرایه می شه دسترسی پیدا کرد و قسمتهای مختلف را جدا نمود. اینها فکر کنم مباحث مقدماتی متلب هست که حتما لازمه یاد بگیرید
البته دستور blkproc هم برای انجام عملیات روی تصویر به صورت بلاک به بلاک هست
می تونید توی تالار یا پیام خصوصی در ارتباط باشید

ehsan_yganeh88
چهارشنبه 24 تیر 1394, 23:03 عصر
می تونم ایمیل تونو داشته باشم

rahnema1
چهارشنبه 24 تیر 1394, 23:07 عصر
لطفا با پیام خصوصی در ارتباط باشید

sim-power
سه شنبه 27 مرداد 1394, 22:12 عصر
آموزش پردازش تصویر در متلب (http://sim-power.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%D9%85%D8%AA%D9%84%D8%A8-4/)هيستوگرام تصوير
تا به حال تصويرهاي Gray Scale را بررسي کرديم. از اين به بعد هم همين کار را مي‌کنيم! با اين تفاوت که اگر تصوير ورودي رنگي بود اول Gray Scale‌اش مي‌کنيم و بعد کارها را ادامه مي دهيم.
تصوير flowers.tif را با دستور imread در ماتريس flowers ذخيره کنيد. از دستور rgb2gray براي تبديل فرمت رنگي تصوير به Gray Scale استفاده کنيد. حالا هيستوگرام تصوير را رسم کنيد. بعد يکي از قله‌هاي نمودار هيستوگرام را انتخاب کنيدکه بين دوتا دره باشد. کاري کنيد که فقط اين قله درون هيستوگرام باقي بماند. بعد با دستور im2bw تصوير را از Gray Scale به سياه سفيد تبديل کنيد و نتايج را مقايسه کنيد!
چطور شد؟ توضيح مي‌دهم، اينطوري:
flowers=imread('flowers.tif','tif');
flowersgray=rgb2gray(flowers);
imhist(flowersgray)
من هيستوگرام را نگاه کردم و شما هم نگاه کنيد. (هيستوگرام تصوير را بادستور imhist کشيدم) قلة بين 50 و 100 را انتخاب مي‌کنم. حالا يک ماتريس جديد مي‌سازم طوري که فقط جاهايي که مقدار ماتريس flowersgray در محدودة 50 تا 100 است، در ماتريس جديد 0 باشد و باقي جاها 1 باشد.
(يعني يک ماتريس باينري يا سياه سفيد)