زمان کنونی: ۰۷ دى ۱۴۰۳, ۰۹:۵۶ ق.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

Image cropping در متلب

ارسال:
  

mina001 پرسیده:

Image cropping در متلب

سلام دوستان در متلب چطوری میتونم یک تصویر را در مرحله پیش پردازش Image cropping کنم؟
لطفا راهنماییم کنید
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

Behnam‌ پاسخ داده:

RE: Image cropping در متلب

(۱۵ مهر ۱۳۹۵ ۱۲:۰۷ ب.ظ)mina001 نوشته شده توسط:  سلام دوستان در متلب چطوری میتونم یک تصویر را در مرحله پیش پردازش Image cropping کنم؟
لطفا راهنماییم کنید
هم با موس میشه و هم دستی.
این دستور که باعث میشه عکس رو گرافیکی نشون بده و با موس، مستطیل رو انتخاب کنید
کد:
I = imread('circuit.tif')
J = imcrop(I);
دستور زیر هم مختصات گوشه‌های مستطیل رو به صورت دستی داده
کد:
I = imread('circuit.tif');
J = imcrop(I,[60 40 100 90]);

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
نقل قول این ارسال در یک پاسخ

ارسال:
  

mina001 پاسخ داده:

RE: Image cropping در متلب

نقل قول: هم با موس میشه و هم دستی.
این دستور که باعث میشه عکس رو گرافیکی نشون بده و با موس، مستطیل رو انتخاب کنید
کد:
I = imread('circuit.tif')
J = imcrop(I);
دستور زیر هم مختصات گوشه‌های مستطیل رو به صورت دستی داده
کد:
I = imread('circuit.tif');
J = imcrop(I,[60 40 100 90]);

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
ممنونم از پاسختون
کدی که من نوشتم به صورت زیر است، ولی درست کار نمیکند من میخواهم فقط قسمت سیاه دور تصویر حذف شود، یعنی قسمت imcropp رو نمیدانم چطور برای برش عدد بدم!
کد:
X = imread('C:\Users\mina\Documents\MATLAB\retina\dataset drive\train\21training.jpg');
X2 = imcrop(X,[50 40 50 50]);
subplot(1,2,1)
imshow(X)
title('Original Image')
subplot(1,2,2)
imshow(X2,'Border','tight')
title('Cropped Image')


فایل‌(های) پیوست شده



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

ارسال:
  

Behnam‌ پاسخ داده:

RE: Image cropping در متلب

(۱۶ مهر ۱۳۹۵ ۰۶:۰۶ ب.ظ)mina001 نوشته شده توسط:  
نقل قول: هم با موس میشه و هم دستی.
این دستور که باعث میشه عکس رو گرافیکی نشون بده و با موس، مستطیل رو انتخاب کنید
کد:
I = imread('circuit.tif')
J = imcrop(I);
دستور زیر هم مختصات گوشه‌های مستطیل رو به صورت دستی داده
کد:
I = imread('circuit.tif');
J = imcrop(I,[60 40 100 90]);

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
ممنونم از پاسختون
کدی که من نوشتم به صورت زیر است، ولی درست کار نمیکند من میخواهم فقط قسمت سیاه دور تصویر حذف شود، یعنی قسمت imcropp رو نمیدانم چطور برای برش عدد بدم!
کد:
X = imread('C:\Users\mina\Documents\MATLAB\retina\dataset drive\train\21training.jpg');
X2 = imcrop(X,[50 40 50 50]);
subplot(1,2,1)
imshow(X)
title('Original Image')
subplot(1,2,2)
imshow(X2,'Border','tight')
title('Cropped Image')

حدس میزدم این سؤال رو بپرسید چون معنی نداره توو متلب یکی دستی بیاد تصویر رو ببره.
ببینید باید اون چهار نقطه رو با کد پیدا کنید، اون نقاط به صورت [tex](x1,\: y1)[/tex] که نقطه‌ی بالا سمت چپ مستطیل رو نشون میده، و [tex](x2,\: y2)[/tex] که پایین و سمت راست رو نشون میده. همین دو نقطه برای crop لازم و کافی هستند.
برای پیدا کردن x1، یعنی مختصات x سمت چپ تصویر (یه خط عمودی سمت چپ تصویر که باید بریده بشه)، باید از سمت چپ تصویر شروع کنید و به هر ستون نگاه کنید ببینید پیکسل غیرسیاه داره یا نه. یعنی برای هر ستون، به تمامی پیکسل‌ها (سطرها) نگاه کنید. البته مطمئن نیستم که اونا کاملا سیاه هستند، مثلاً میتونید بگید که RGBش بیشتر از [tex](10,10,10)[/tex] بود (یعنی تقریباً سیاه نبود) پس جزو شکل هست. اینطوری x1 رو میتونید پیدا کنید. در واقع همچین چیزی:
کد:
for j = 1 to j = M
   for i = 1 to i = N
       if(img(i,j,1) > 10 && img(i,j,2) > 10 && img(i,j,3) > 10)
          x1 = j;
          break;
قطعه کد بالا میاد توو دونه دونه ستون‌ها، از چپ به راست، نگاه میکنه ببینه یه پیکسل غیر سیاه داره یا نه. اگه داشت، اون ستون رو به عنوان سمت چپ crop در نظر میگیره. حواستون باشه از کل حلقه‌ها بیرون برید بعدش و الا میاد jهای بعدی رو انتخاب میکنه. ما اولین ستون رو میخوایم نه آخریش رو!

همین کار رو برای y1، یعنی خط افقی بالای تصویر که باید بریده بشه، میتنید انجام بدید. توو هر سطر، باید نگاه کنید ببینید پیکسل غیرسیاه هست یا نه. پس این سری اول به سطر، و بعد به همه‌ی ستون‌های اون سطر باید نگاه کنید:
کد:
for i = 1 to N
   for j = 1 to M
      if (...)
          y1 = i;

برای سمت راست و پایین هم مشابه این کار رو انجام میدید. منتهی باید متغیرها رو کم کنید. یعنی برای خط سمت راست، از سمت راست‌ترین ستون نگاه کنید به سمت چپ‌ترین:
کد:
for j = M to 1
   for i = 1 to N
برای خط پایین هم، از آخرین سطر به بالا.
کد:
for i = N to 1
   for j = 1 to M
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

gunnersregister پاسخ داده:

RE: Image cropping در متلب

برای پیدا کردن کوچیکترین مستطیلی که شامل اون دایره ها باشه این راه بهتر به نظر میرسه:

۱/ تصویر رنگی تون رو تبدیل به grayscale کنید. اسمش رو بزاریه I1
۲/ لبه های تصویر I1 رو پیدا کنید.اسمش رو بزارید I2
۳/ در تصویر I2 به دنبال چهار مقدار زیر بگردید(تصویر I2 مقادیر ۰و۱ داره.) بیشترین و کمترین اندیس x,y . این مقادیر چهارچوب دایره رو تعیین میکنن.
۴/ حالا با دونستن اینها میتونید از همون دستور imcrop استفاده کنید.
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  شبکه عصبی مک کلاچ برای یک مورد کاربردی با متلب Sanazzzz.mi ۰ ۲,۲۵۸ ۲۶ مهر ۱۳۹۸ ۰۱:۲۰ ق.ظ
آخرین ارسال: Sanazzzz.mi
  مجموعه آموزشی رایگان برنامه نویسی متلب net work ۰ ۲,۱۸۰ ۲۲ فروردین ۱۳۹۸ ۰۳:۲۱ ب.ظ
آخرین ارسال: net work
  نیاز به دیتاست برای شبکه عصبی مصنوعی در متلب MATLAB ghasemkh ۰ ۲,۹۳۰ ۲۵ دى ۱۳۹۷ ۰۳:۳۲ ق.ظ
آخرین ارسال: ghasemkh
  مشکل لایسنس متلب αɾια ۱۳ ۱۶,۴۱۶ ۲۱ آذر ۱۳۹۷ ۱۰:۴۷ ق.ظ
آخرین ارسال: αɾια
  پردازش تصویر با متلب Baran15 ۰ ۱,۹۷۶ ۱۷ آبان ۱۳۹۷ ۰۱:۱۵ ق.ظ
آخرین ارسال: Baran15
  ماتریس ها در متلب safoora s ۱ ۲,۱۷۳ ۱۲ مرداد ۱۳۹۷ ۱۲:۲۲ ب.ظ
آخرین ارسال: BBumir
  کمک در یادگیری شبیه سازی شبکه در متلب atefe73 ۲ ۲,۹۴۵ ۲۹ تیر ۱۳۹۷ ۰۱:۵۹ ب.ظ
آخرین ارسال: The BesT
  کمک در یادگیری شبیه سازی شبکه های هوشمند در متلب atefe73 ۱ ۳,۸۴۳ ۲۵ تیر ۱۳۹۷ ۰۶:۴۸ ب.ظ
آخرین ارسال: atefe73
Sad جایگزین goto در متلب! αɾια ۵ ۱۰,۸۶۱ ۲۲ تیر ۱۳۹۷ ۰۳:۵۱ ب.ظ
آخرین ارسال: Riemann
  خطای نتیجه در متلب The BesT ۶ ۴,۸۹۶ ۲۰ تیر ۱۳۹۷ ۱۰:۳۹ ق.ظ
آخرین ارسال: Behnam‌

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close