|
|
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
| Вход | |||||||||||||||||||||||||||||||||
|
Раздел "Обработка сигналов и изображений\Image Processing Toolbox"
И.М.Журавель "Краткий курс теории обработки изображений" В оглавление \ К следующему разделу \ К предыдущему разделу Измерение радиуса части мотка ленты Рассмотрим задачу определения радиуса круглого объекта. В качестве примера возьмем катушку ленты. Решение задачи будет усложняться тем, что на изображении представлено только часть исследуемого объекта. При решении этой задачи будем использовать функцию bwtraceboundary. Содержание
Шаг 1: Считывание изображения.
Считаем изображение из файла tape.png.
RGB=imread('tape.png');
imshow(RGB);
text(15,15,'Измерение радиуса',...
'FontWeight','bold','Color','y');
Шаг 2: Пороговая обработка изображения. Преобразуем изображение в бинарное для последующего получения координат границ с помощью функции bwtraceboundary.
Шаг 3: Определение положения начальной точки границы объекта.
Шаг 5: Подгонка окружности на выделенные границы.
Отобразим основное уравнение окружности:
(x-xc)^2+(y-yc)^2=radius^2, где (xc, yc) - центр окружности.
Это же уравнение можно представить в другом виде через параметры a, b, c
x^2+y^2+a*x+b*y+c=0, где a=-2*xc, b=-2*yc, c=xc^2+yc^2-radius^2
Параметры a, b, c нужны для вычисления радиуса.
x=contour(:, 2);
y=contour(:, 1);
% при вычислении радиуса будет
% использоваться метод наименьших квадратов
abc=[x y ones(length(x), 1)]\[-(x.^2+y.^2)];
a=abc(1); b=abc(2); c=abc(3);
% вычислим положение центра и радиус
xc=-a/2;
yc=-b/2;
radius=sqrt((xc^2+yc^2)-c)
% отобразим вычисленный центр
plot(xc, yc, 'yx', 'LineWidth', 2);
% отобразим полную окружность
theta=0:0.01:2*pi;
% используем параметрическое представление
% окружности для получения координат точек
Xfit=radius*cos(theta)+xc;
Yfit=radius*sin(theta)+yc;
plot(Xfit, Yfit);
message=sprintf('Вычисленный радиус равен %2.3f пикселей', radius);
text(15, 15, message, 'Color', 'y', 'FontWeight', 'bold');
radius=
80.7567
В работе приведен пример решения задачи определения радиуса окружности мотка ленты. Следует отметить, что представленная задача находит свое применение в реальных системах управления различными автоматизированными технологическими процессами. Такое внедрение компьютерных технологий приводит к повышению эффективности производства. Приведенные выше подходы также нашли свое применение в различных системах дистанционного контроля. Однако точность измерений во многом зависит от качества используемой аппаратуры. |
|
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
| На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
| E-mail: | ||
| Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |
|