تحليل تصوير-2
6- آستانه گيري تصوير
برخي مزاياي استفاده از تصاوير باينري (چرا به دنبال دودويي كردن بايد باشيم؟):
الف – حجم پايين پردازشها (سرعت اجراي بالا)
ب- بدست آوردن اطلاعات مفيد از تصوير (مانند تعداد اشياء، مساحت هركدام، موقعيت هر شي ء)
براي تبديل يك تصوير سطح خاكستري به تصوير باينري از دستور im2bw ميتوان استفاده كرد. اين دستور نياز به مقدار يك آستانه دارد. براي انتخاب مناسب مقدار آستانه، ميتوانيم از دستور graythresh استفاده كنيم:
براي حذف نويز، ميتوانيم از دستور bwareaopen استفاده كنيم. ايده ي اساسي اين است كه نويز عموماً شامل نقاط با مساحت كم است. بنابراين ميتوان هر شيء با مساحتي كمتر از يك حد را نويز دانست. بنابراين به كمك عملگر مورفولوژي بازكردن ميتوان تمام اشيايي كه مساحتشان كمتر از يك مقدار مشخص (در اينجا 50 ) باشد را حذف كرد. توجه: مقدار 50 در حقيقت تابعي از رزولوشن 12 (يا درجه تفكيك) تصوير است. هر چه رزولوشن بيشتر باشد، بايد مقدار اين آستانه را نيز بزرگتر در نظر گرفت.
7- شناسايي اشياء در تصوير
تعريف جزء به هم پيوسته؟
براي استخراج اجزاء به هم پيوسته از يك تصوير باينري ميتوان از هر يك از دستورات bwconncomp، bwlabeln و bwlabel استفاده كرد اما بهترين و جديدترين آنها دستور bwconncomp است كه حافظه كمتري مصرف كرده و گاهاً سريعتر نيز ميباشد.
مقايسه مختصر سه دستور فوق:
Input Output Memory Connectivity
Dim Form Use
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
BWLABEL 2‐D Double‐precision High 4 or 8
label matrix
BWLABELN N‐D Double‐precision High Any
label matrix
BWCONNCOMP N‐D CC struct Low Any
در پنجره فرمان دستورات زير را وارد كنيد:
نتيجه :
تمرين 1: پيدا كردن و پاك كردن بزرگترين شيء در يك تصوير باينري
CC = bwconncomp(BW);
numPixels = cellfun(@numel,CC.PixelIdxList);
[biggest,idx] = max(numPixels);
BW(CC.PixelIdxList{idx}) = 0;
توضيحات دستورات numel و cellfun؟
تمرين 2: معرفي و استفاده از دستور regionprops
براي كسب برخي اطلاعات از يك تصوير باينري، ابتدا اطلاعات اجزاء به هم پيوسته ي آن را به كمك يكي از سه دستور مذكور (مانندbwconncomp) استخراج كرده و به دستور regionprops بدهيد. اين دستور برخي ويژگيها را محاسبه مي كند كه عبارتند از:
>>S = regionprops(CC,’all’);
S =
88×1 struct array with fields:
Area
Centroid
BoundingBox
SubarrayIdx
MajorAxisLength
MinorAxisLength
Eccentricity
Orientation
ConvexHull
ConvexImage
ConvexArea
Image
FilledImage
FilledArea
EulerNumber
Extrema
EquivDiameter
Solidity
Extent
PixelIdxList
PixelList
Perimeter
اگر ميخواهيد فقط برخي از ويژگيهاي فوق محاسبه شوند (تا در زمان صرفه جويي كنيد)، اين ويژگيها را پشت سر هم ليست كنيد. مانند:
>> S = regionprops(CC,’Centroid’,’Area’);
تمرين 3: استفاده از دستورات bwlabeln و bwlabel و نيز دستور imtool
BW = imread(‘text.png’);
L = bwlabel(BW,4); % or use L = bwlabeln(BW,4);
[r,c] = find(L == 2)
imtool(L)
نكته 1: شيء با شماره ي صفر همان پس زمينه است.
نكته 2: خروجي دستور bwconncomp از نوع سلول است (نه يك ماتريس مانند L در مثال فوق). براي اينكه در اين دستور هم بتوانيم يك خروجي ماتريسي مانند ماتريس L در مثال اخير داشته باشيم از دستور labelmatrix ميتوانيم استفاده كنيم:
BW = imread(‘text.png’);
CC = bwconncomp(BW);
L = labelmatrix(CC);
L2 = bwlabel(BW);
whos L L2
8- بررسي يك شيء
نشان دادن دانه برنج با شماره ي 50:
نتيجه:
ادامه دارد …
نویسنده: دکتر هادی گرایلو
مقاله متلب,مطلب,متلب,مقاله برق,مقاله قدرت,مقاله مطلب,مقاله سیمولینک,دانلود متلب,دانلود مقاله متلب,مقالهmatlab ,آموزش متلب,مطلب,متلب,آموزش برق,آموزش قدرت,آموزش مطلب,آموزش سیمولینک,دانلود متلب,دانلود آموزش متلب,آموزشmatlab ,پروژه متلب,مطلب,متلب,پروژه برق,پروژه قدرت,پروژه مطلب,پروژه سیمولینک,دانلود متلب,دانلود پروژه متلب,پروژهmatlab ,
سلام این سوالی که من دارم اگر ممکنه روند حل رو بهم بگید .سپاس.
الگریتمی پیاده سازی کنید توپ های سیاه تصویر رو حذف کنه.
متاسفانه اطلاع ندارم