Главная страница
Навигация по странице:

  • 2.2. Обработка изображения

  • 2.2. Распознавание линий

  • 2.2. Распознавание цифр

  • 2.3. Сопоставление данных

  • 2.4. Построение 3D моделей 2.5. Разработка интерфейса Эргономическая оценка рабочего места оператора

  • Эргономические требования к рабочему месту оператора ПК Общие требования

  • Р абочее место оператора Требования к рабочему столу

  • Требования к рабочему стулу (креслу)

  • МОЙ ДИПЛОМ. Федеральное агентство железнодорожного транспорта


    Скачать 1.11 Mb.
    НазваниеФедеральное агентство железнодорожного транспорта
    АнкорМОЙ ДИПЛОМ.doc
    Дата20.01.2018
    Размер1.11 Mb.
    Формат файлаdoc
    Имя файлаМОЙ ДИПЛОМ.doc
    ТипРеферат
    #14632
    страница2 из 4
    1   2   3   4


    2. Разработка и написание программы

    2.1. Алгоритмы работы программы

    Перед написанием программы необходимо продумать алгоритм ее работы, построить соответствующие блок-схемы (Рис.10).

    Для начала необходимо загрузить изображение карты в программу. Любое изображение в MatLab представляется в виде массива с числами. После получения этого массива нам необходимо нужным образом его обработать. Топографическая карта обычно выполнена в полно цветном варианте, линии рельефа и все цифры выполнены одним цветом. Поэтому, зная цвета линий и цифр, мы можем их выделить из числа других объектов на карте, и преобразовать наше растровое изображение в логический формат, то есть в новую матрицу. Эта матрица будет представлять собой значения только 1 и 0 – там, где находиться линия или число – 1, а там, где остальные объекты 0.

    Картинку вставить

    Далее очистим новую матрицу от шумов. Это необходимо сделать, так как до преобразования на ней было множество посторонних элементов, ненужных нам, и которые могли остаться на карте.

    Далее, из этой новой матрицы, с помощью специальных функцийMatLab, мы определим все отдельные объекты и пронумеруем их. Затем выделим из всех найденных объектов линии по их свойствам (например, малая площадь самого объекта в области этого объекта). И если вычесть получившуюся матрицу линий из нашей первоначальной матрицы – получим матрицу цифр.

    Распознаем каждую цифру по ее особенным свойствам (например, число Эйлера, эксцентриситет, центр масс и так далее), а затем соединим все полученные цифры в числа, составим новую матрицу чисел.

    Следующим шагом, необходимо сопоставить все полученные нами данные – линии и числа, и также сформировать новую матрицу Z. Эта матрица будет содержать все высоты на карте.

    По полученной матрице можно будет построить 3-D модель.



    Рис. 10. Блок-схема работы программы

    2.2. Обработка изображения

    Для начала нам потребуется загрузить карту в MatLab для дальнейшей работы с ней. Для этого используем функцию imread.

    f=imread('топографическая карта 1.jpg');
    Теперь наша карта представлена с помощью массива f, в каждой ячейке которого указана интенсивность каждого пикселя. Топографические карты выполняются в цветном варианте, но рельеф и цифры изображаются черным цветом. Компьютеру в данном случае будет намного проще работать с черно-белым изображением, поэтому с помощью специальных функций программы переведем изображение в черно-белый вариант:
    fR = f(:, : , 1);

    fG = f(: , : , 2);

    fB = f(:, : , 3);

    gray=((fR>150)&(fG<150)&(fB<150));
    Мы просто исключили красный, зеленый и синий цвета и сохранили новый массив. Далее с помощью функции size мы определяем размер изображения, который нам пригодиться в будущем. И найдем отдельные объекты на изображении используя специальную функцию bwlabel и найдем свойства этих объектов с помощью regionprops, то есть площадь Area и область объекта BoundingBox. только второй раз через пару страниц
    [Ny,Nx]=size(gray);

    [labeled,num] = bwlabel(gray,8);

    stats = regionprops(labeled, 'Area','BoundingBox');

    Очистим изображение от шума. Если есть в нашем изображении отдельные пиксели, вокруг которых нет других элементов, то он их удалит. И сохраним новый массив без шумов.
    for i=1:num

    if stats(i).Area<15

    for xx=min(ceil(stats(i).BoundingBox(1)),Nx):min(ceil(stats(i).BoundingBox(1)+stats(i).BoundingBox(3)-1),Nx)

    for yy=min(ceil(stats(i).BoundingBox(2)),Ny):min(ceil(stats(i).BoundingBox(2)+stats(i).BoundingBox(4)-1),Ny)

    if labeled(yy,xx)==i

    gray(yy,xx)=0;

    end

    end

    end

    end

    end
    grayN=gray;

    2.2. Распознавание линий

    Для того, чтобы потом удобно было распознавать линии и цифры создадим два массива. В одном на изображении будут видны только линии, а на другом только цифры.

    Для начала найдем все объекты на карте и с помощью специальной функции пронумеруем их:
    clearvars labeled num stats;

    [labeled,num] = bwlabel(gray,8);

    stats = regionprops(labeled, 'Area','BoundingBox');
    После этих операций у нас образовался совершенно новый массив, в котором есть только пронумерованные по порядку линии и цифры, далее нам нужно и отличить между собой.

    У каждого объекта есть своя область, в которой он находится (Рис. 3.). Мы будем очень часто использовать их в своей работе.



    Рис. 3. Области различных объектов.
    У каждого объекта также есть свой объем. После рассуждений можно прийти к выводу, что линия занимает очень малый объем в своей области. По этому свойству ее можно легко определить. Но есть мы будем уже выделенный нами элемент (например первый), затем вычисляем его площадь и сравниваем эту площадь с площадью его области. Если это отношение большое, то перед нами линия, если маленькое, то цифра. Линии мы стираем и образуем матрицу чисел.
    for i=1:num

    if (stats(i).Area/(stats(i).BoundingBox(3)*stats(i).BoundingBox(4)))<0.1

    for xx=min(ceil(stats(i).BoundingBox(1)),Nx):min(ceil(stats(i).BoundingBox(1)+stats(i).BoundingBox(3)-1),Nx)

    for yy=min(ceil(stats(i).BoundingBox(2)),Ny):min(ceil(stats(i).BoundingBox(2)+stats(i).BoundingBox(4)-1),Ny)

    if labeled(yy,xx)==i

    grayN(yy,xx)=0;

    end

    end

    end

    end

    end
    Затем получаем карту линий, из общей карты вычитаем карту цифр.
    grayL=gray.*

    grayN;

    [labeledL,numL] = bwlabel(grayL,8);

    statsL = regionprops(labeledL, 'EulerNumber');

    enumL=zeros(numL,1);

    for i=1:numL

    enumL(i)=statsL(i).EulerNumber;

    end

    2.2. Распознавание цифр

    Теперь у нас есть отдельный массив, в котором присутствуют только цифры. Нам предстоит, как уже было сказано ранее, одна из главных и сложных задач, в данной работе - это распознавание цифр на топографической карте. Причем цифры могут располагаться как горизонтально, так и под любым углом наклона, поскольку они всегда нарисованы вдоль линии рельефа.

    Если бы мы создали базу данных эталонов цифр и постепенно сравнивали каждый участок карты с нашими эталонными цифрами, то обработка большой карты заняла бы много времени. Пришлось бы также поворачивать наши эталоны на каждом участке карты, где возможно расположение цифры.

    Лучше применим метод ................................ Все цифры - 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 разные. Они имеют разные свойства, по разному нарисованы, каждая из ни индивидуальна, поэтому для каждой можно придумать свойство, которое отличало бы ее от других, причем эти свойства не должны зависеть от угла наклона цифры.

    Среда программирования MatLab имеет множество функций, которые бы помогут нам в реализации задуманного. А сейчас выявим эти свойства.

    Во первых стоит заметить цифру 8, ее можно легко определить из ряда других чисел по числу Эйлера. Число Эйлера равно числу объектов на изображении минус количество дыр в этих объектах. В цифре 8 две дыры и больше таких цифр нет. Для определения числа Эйлера в MatLab есть специальные функции:

    enum(i)=stats(i).EulerNumber;
    if (enum(i)==-1)

    definenum=8; sign=1;

    end

    Из части кода мы видим, что если программа вычислила число Эйлера и оно равно -1, то перед ней цифра 8.

    Далее будем работать с теми цифрами, число Эйлера у которых 0, то есть 1 дыра - это 4, 6, 9, 0. У каждой из цифр есть своя область, в которой она находится, в зависимости от наклона эти области меняются (Рис 3.).



    Рис. 3. Области цифр, в зависимости от наклона.

    Далее мы будем использовать области ццифр для выявления индивидуальных свойств 4 и 0, у этих цифр разное отношение заполненной части к незаполненной в своей области, в которой находится цифра.

    if (enum(i)==0)&&(extent(i)>0.72)&&(sign==0)

    definenum=4; sign=1;

    end

    if (enum(i)==0)&&(extent(i)<0.62)&&(sign==0)

    definenum=0; sign=1;

    end
    Из кода мы видим, что у 4 это отношение не зависимо от угла наклона больше 0.72, а у 0 меньше 0.62.

    Самое сложное - это найти отличия 6 от 9. Эти числа абсолютно одинаковые по форме, объему и прочим показателям. 6 есть перевернутая 9. Поэтому мы придумаем новый способ. У 6 и 9 заполенность входит в границы от 0.63 до 0.71. И если компьютер вычислил место на карте с числом Эйлера 0 и входящией в границы заполненностью, то мы будем рисовать в области цифры круг (Рис. 4.).



    Рис. 4. Свойства 9 и 6.
    После этой операции, как мы видим на рисунке, у 9 остается число Эйлера равным 0, а у 6 оно изменяется и становиться -1, то есть дырка пропадает.

    Для рисования круга мы используем код:
    if (enum(i)==0)&&(extent(i)>0.63)&&(extent(i)<0.71)&&(sign==0)

    [rr cc] = meshgrid(1:Nx,1:Ny);

    centrx=xx(i)+cos(orient(i))*rad(i)/3.5;

    centry=yy(i)-sin(orient(i))*rad(i)/3.5;

    C2 = (sqrt((rr-centrx).^2+(cc-centry).^2)<=(rad(i)/2.5));

    newnumb=C2|numb;

    [labeled3,num3] = bwlabel(newnumb,8);

    stats3 = regionprops(labeled3, 'EulerNumber');
    А затем, с помощью нового числа Эйлера мы определим что за цифра перед нами - 6 или 9.
    if stats3(i).EulerNumber==1

    definenum=6; sign=1;

    end

    if stats3(i).EulerNumber<1

    definenum=9; sign=1;

    end

    Следующие цифры, которые мы будем искать на карте - это 1, 7, 5, 3, то есть те, у кого число Эйлера = -1, нет дыр.

    С помощью эксцентриситета из оставшихся цифр выделим 1 и 7. Эксцентриситет — числовая характеристика объекта, показывающая степень его отклонения от окружности. У окружности эксцентриситет равен 0, а у линии 1. 1 и 7 очень вытянутые цифры. Далее, чтобы отличить их между собой мы ???? бред

    if (enum(i)==1)&&(eccen(i)>0.93)&&(meanN(i)==-1)

    meanN(i)=1;orient(i)=orient(i)-0.1015;

    end

    if (enum(i)==1)&&(eccen(i)>0.85)&&(convex(i)>0.44)&&(meanN(i)==-1)

    meanN(i)=7; orient(i)=orient(i)+0.1881;

    end
    Остались только 2, 3 5. 2 и 3 также круглишочками. в уголке 2ки рисуем.

    2.3. Сопоставление данных

    После того, как мы распознали все линии и все цифры, нам следует сопоставить наши данные. То есть соединить все цифры в числа, поскольку высота гор чаще всего измеряется трех или четырех значными цифрами, а также соотнести к каждой линии рельефа свою цифру.

    Сначала соединим цифры в числа. Для этого

    2.4. Построение 3D моделей

    2.5. Разработка интерфейса

    Эргономическая оценка рабочего места оператора
    В настоящее время в производстве, научно-исследовательских и конструкторских работах, сфере управления и образования нашли широкое применение персональные ЭВМ (ПЭВМ). Практически не осталось ни одного вида деятельности, где бы ни использовались компьютеры. Они завоевывают свое место на предприятии, в организации, офисе и даже в домашних условиях.

    С помощью компьютера решается широкий спектр задач, особенно в организациях, связанных с хранением и поддержанием в актуальном состоянии больших массивов информации, обработкой данных, оказанием всевозможных информационных услуг.

    Поскольку целью данной дипломной работы является создание компьютерной программы, эта цель подразумевает под собой владение навыками работы на компьютере разработчиком и оператором, который в последствии будет использовать данную программу. А когда речь идет об обеспечение комфортного рабочего места за компьютером, мы должны уделить этому особое внимание. Так как в данном случае специфика труда оператора заключается в больших зрительных нагрузках в сочетании с малой двигательной активностью, монотонностью выполняемых операций, вынужденной рабочей позой. Эти факторы отрицательно сказываются на самочувствии работающего и могут нанести непоправимый вред его здоровью.
    Эргономические требования к рабочему месту оператора ПК
    Общие требования
    При организации рабочего места весьма важным фактором является рабочая поза работника, т.е. положение его корпуса, головы, рук и ног относительно орудий труда. Если работник работает сидя, ему необходимо обеспечить правильную и удобную посадку, что достигается устройством опоры для спины, рук, ног, правильной конструкцией сиденья, способствующей равномерному распределению массы тела.

    Все материальные элементы рабочего места разделяют на предметы постоянного и временного пользования и с учетом этого располагают в определенном порядке на местах постоянного хранения; это экономит трудовые движения и силы работающего. Инструмент, оснастка и предметы труда должны находиться на расстоянии 560 - 750 мм на уровне рук работника, тогда их использование не приводит к излишним движениям и наклонам. Важным элементом рациональной планировки рабочего места является учет индивидуальных антропометрических и психофизиологических данных работающего.

    Рабочие места оборудуют соответствующей мебелью и инвентарем, отвечающим наиболее комфортабельным условиям работы и требованиям физиологии, психологии и эстетики. С учетом нашей дипломной работы, рабочее место оператора должно быть оснащено столом, стулом, монитором и клавиатурой и компьютерной мышью.

    Центр экрана монитора должен находиться примерно на уровне глаз, а расстояние между глазами и плоскостью экрана составлять не менее 40 - 50 см. Желательно, чтобы прямой солнечный свет не попадал на экран. По отношению к сидящему за столом окно, по возможности, должно быть слева или спереди. От яркого света следует защититься плотными шторами на окнах. Однако смотреть на экран монитора (как и на экран телевизора) в полной темноте не рекомендуется, необходим дополнительный источник рассеянного света (можно включить люстру, настольную лампу).

    Помещение с ПК должны быть оснащены аптечкой первой помощи и углекислотными огнетушителями, а также в таких помещениях ежедневно должна проводиться влажная уборка.

    Далее мы будем рассматривать каждый из требуемых объектов, для установления критериев их выбора из всех имеющихся моделей и правильной установки всего оборудования на рабочем месте.

    В Санитарных правилах и нормах - СанПиН 2.2.2.542-96 даются общие требования к организации и оборудованию рабочих мест с ВДТ и ПЭВМ. Далее будем учитывать все эти правила и нормы.
    Р
    абочее место оператора


    Требования к рабочему столу
    Для оборудования рабочего места оператора ПК рекомендуется использовать специализированную компьютерную мебель, то есть специальный рабочий стол для компьютера. Конструкция рабочего стола должна обеспечивать оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей (размер ВДТ и ПЭВМ, клавиатуры, пюпитра и др.), характера выполняемой работы.

    Высота рабочей поверхности стола должна регулироваться в пределах 680-800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм. Модульными размерами рабочей поверхности стола для ПЭВМ, на основании которых рассчитываются конструктивные размеры, следует считать: ширину 800,1000,1200 и 1400 мм, глубину 800 и 1000 мм при нерегулируемой его высоте, равной 725 мм.

    Рабочий стол должен иметь пространство для постановки ног, которое составляет: высоту - не менее 600 мм, ширину - не менее 500 мм, глубину на уровне колен - не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.

    Конструкция рабочего стула (кресла) должна поддерживать рациональную рабочую позу при работе с ПЭВМ, позволять изменять позу с целью снижения статического напряжения мышц шейно-плечевой области и спины для предупреждения утомления.
    Требования к рабочему стулу (креслу)
    Рабочий стул (кресло) должен быть подъемно-поворотным и регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья. Конструкция стула должна обеспечивать:

    • ширину и глубину поверхности сиденья не менее 400 мм;

    • поверхность сиденья с закругленным передним краем;

    • регулировку высоты поверхности сиденья в пределах 400-550 мм и углов наклона вперед до 15° и назад до 5°;

    • высоту опорной поверхности спинки 300 ± 20 мм, ширину - не менее 380 мм и радиус кривизны горизонтальной плоскости - 400 мм;

    • угол наклона спинки в вертикальной плоскости в пределах 0 ±30°;

    • регулировку расстояния спинки от переднего края сиденья в пределах 260-400 мм;

    • стационарные или съемные подлокотники длиной не менее 250 мм и шириной - 50-70 мм;

    • регулировку подлокотников по высоте над сиденьем в пределах 230 ± 30 мм и внутреннего расстояния между подлокотниками в пределах 350-500 мм.

    Поверхность сиденья, спинки и других элементов стула (кресла) должна быть полумягкой с нескользящим, неэлектризующимся и воздухопроницаемым покрытием, обеспечивающим легкую очистку от загрязнений.
    1   2   3   4


    написать администратору сайта