قسم الكمبيوتر و البرامج والكتب مكان متخصص لمناقشة الكمبيوتر وأفضل الطرق لحل مشاكله بالاضافة الى استعراض احدث الكتب والبرامج .
يمنع اضافة الكراك او الكيجن او السيريل لحفظ الحقوق الخاصة بالبرامج

   

Just_Me
:: مهندس ::
تاريخ التسجيل: Sep 2008
المشاركات: 1
نشاط [ Just_Me ]
قوة السمعة:
قديم 22-09-2008, 02:05 AM المشاركة 1   
افتراضي طلب - Shape Recoginition



السلام عليكم ورحمة الله وبركاته

اخواني اعضاء منتدى القرية الالكترونية لدي برنامج للتعرف على الأشكال الهندسية ، هذا هو البرنامج
[HTML]


function W = Classify(RGB)
% Step 1: Read image Read in
RGB = imread('test.bmp');
figure,
imshow(RGB),
title('Original Image');
% Step 2: Convert image from rgb to gray
GRAY = rgb2gray(RGB);
figure,
imshow(GRAY),
title('Gray Image');
% Step 3: Threshold the image Convert the image to black and white in order
% to prepare for boundary tracing using bwboundaries.
threshold = graythresh(GRAY);
BW = im2bw(GRAY, threshold);
figure,
imshow(BW),
title('Binary Image');
% Step 4: Invert the Binary Image
BW = ~ BW;
figure,
imshow(BW),
title('Inverted Binary Image');
% Step 5: Find the boundaries Concentrate only on the exterior boundaries.
% Option 'noholes' will accelerate the processing by preventing
% bwboundaries from searching for inner contours.
[B,L] = bwboundaries(BW, 'noholes');
% Step 6: Determine objects properties
STATS = regionprops(L, 'all'); % we need 'BoundingBox' and 'Extent'
% Step 7: Classify Shapes according to properties
% Square = 3 = (1 + 2) = (X=Y + Extent = 1)
% Rectangular = 2 = (0 + 2) = (only Extent = 1)
% Circle = 1 = (1 + 0) = (X=Y , Extent < 1)
% UNKNOWN = 0
figure,
imshow(RGB),
title('Results');
hold on
for i = 1 : length(STATS)
W(i) = uint8(abs(STATS(i).BoundingBox(3)-STATS(i).BoundingBox(4)) < 0.1);
W(i) = W(i) + 2 * uint8((STATS(i).Extent - 1) == 0 );
centroid = STATS(i).Centroid;
switch W(i)
case 1
plot(centroid(1),centroid(2),'wO');
case 2
plot(centroid(1),centroid(2),'wX');
case 3
plot(centroid(1),centroid(2),'wS');
end
end
return


[/HTML]

وهو برنامج يتعرف على الاشكال الهندسية الموجوده في الصورة ومن ثم يضع رمز معين على كل شكل.

سؤالي هنا هو عن جزء من هذا البرنامج لم استطع فهمه وأود من اهل الخبرة في هذا المنتدى ان يتفضلوا بتوضيحه لي وهو هذا الجزء:
% Square = 3 = (1 + 2) = (X=Y + Extent = 1)
% Rectangular = 2 = (0 + 2) = (only Extent = 1)
% Circle = 1 = (1 + 0) = (X=Y , Extent < 1)

[HTML]

for i = 1 : length(STATS)
W(i) = uint8(abs(STATS(i).BoundingBox(3)-STATS(i).BoundingBox(4)) < 0.1);
W(i) = W(i) + 2 * uint8((STATS(i).Extent - 1) == 0 );
centroid = STATS(i).Centroid;
[/HTML]

لم أفهم الاكسبريشن التي اعتمدها لتحديد الأشكال !! و أرجو منكم مساعدتي .
.
.
.
شكرًا مقدمًا ،



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:56 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)