Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006), страница 98
Описание файла
DJVU-файл из архива "Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006)", который расположен в категории "". Всё это находится в предмете "системы распознавания образов" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 98 - страница
При каждом вызове Асе блок инициализации создает структуру с именем яп1 ЯсаСе, которая содЕржит информацию для доступа к функциям 1се. Например, поле с именем Яп1 Маше (т. е. Яц1 ЯСасе. Яп1 Наше) содержит функцию МАТ1,АВ ш111епвше, которая возвращает имя текущего исполняемого М-файла. Аналогично, поля 11е1оз Япг Ореп1пЯРсп и Яп1 Опсрисрсп загружаются вместе со сгенерированными С(Л1)Е-ом именами открывающих и выходных функций 1се (они будут обсуждаться в следующем параграфе). Если некоторый объект 1СЕ С1Л активируется пользователем (например, при нажатии кнопки), то имя функции, вызывающий этот объект, добавляется в виде поля яи1 Са11ЬасЬ [имя этой функции должно было быть передано в виде строки в чататя1п(1) ]. После формирования Яп1 ЯСаСе, эта структура передается в виде входного аргумента вместе с чатэтя1п(: ) в функцию яц1 ша1Ысп.
Эта функция МАТТ АВ отвечает за создание, компоновку и отправку вызова С1Л. Ддя 1се она строит и отображает пользовательский интерфейс и генерирует все необходимые обращения для ее открытия, вывода и вызова функций. Поскольку предыдущие версии МАТ1,АВ могли не иметь этой функции, С()П)Е в состоянии построить независимую версию нормального С1Л М-файла (т. е.
способного работать без Е1С-файла) с помощью выбора пункта ЕхрогС... из меню Е11е. В независимой версии функция Яп1 ша1пХсп и две подфункции, 1се 1ауопсрсп и 1оса1 орепХАЯ, добавляются к нормальному М-файлу, зависящему от Е1С-файла. Задача 1се |ауопсрсп з.!. и и мм Гся зД! состоит в создании [СЕ С[Л. Независимая версия йсе начинается командами Ы = 118иге(...
!Уп1св', зсЬагассегв!,... 'Со1ог', [0.87843137254902 0.874509803921569 0.890196078431373), 'Со1огшар', [О 0 0.5625;0 0 0.625;0 0 0.6875„0 0 0.75;... 0 0 0.8125;0 0 0.875;0 0 0.9375;0 0 1;0 0.0625 1;... 0.125 1;0 0.1875 1;0 0.25 1;0 0.3125 1;0 0.375 1;... 0 0.4375 1;0 0.5 1;0 0.5625 1",0 0.625 1;0 0.6875 1;.. 0 0.75 1;0 0.8125 1;0 0.875 1;0 0.9375 1",0 1 1;... 0.0625 1 1;0.125 1 0.9375;0.1875 1 0.875;... 0.25 1 0.8125;0.3125 1 0.75;0.375 1 0.6875;... 0.4375 1 0.625;0.5 1 0.5625;0.5625 1 0.5;...
0.625 1 0.4375;0.6875 1 0.375;0.75 1 0.3125;... 0.8125 1 0.25;0.875 1 0.1875;0.9375 1 0.125;... 1 1 0.0625;1 1 0;1 0.9375 0;1 0.875 0;1 0.8125 0;... 1 0.75 0;1 0.6875 0;1 0.625 0;1 0.5625 0;1 0.5 0;... 1 0.4375 0;1 0.375 0;1 0.3125 0;1 0.25 0;... 1 0.1875 0;1 0.125 0;1 0.0625 0;1 0 0;0.9375 0 0;... 0.875 0 0;0.8125 0 0;0.75 0 0;0.6875 0 0;0.625 0 0;.. 0.5625 0 0),... !1псеЕегНапй1е!, !огг!,... !1пчегСНагйсору!, Нег(0, зйегаи1гг18иге1пчегСНагйсору!),...
'МепиВаг', 'попе',... 'Наше', '1СŠ— 1пгегасг1че Со1ог Ей1вог!,... 'МишЬегТ1с1е!, !огг!,... !Рарегров1с1опз, Нес(0, !йе1аи1ШНигерарегров1с1оп!),... !Ров1Г1оп!, [0.8 65.2307692307693 92.6 30.0769230769231),... 'Непйегег', Нег(0, !йегаи1гг18игеНепйегег!),... !НепйегегМойе!, зшапиа1!,... !91пйонВиссопРонпрсп!, з1се(в1се 91пйояВиссопОонпрсп", БсЬо, [), Еи1йага(ЕсЬо))!,... !91пйояВигсопМос1опрсп!, '1се(в1се 91пйонВиссопМогйопрсп», НсЬо, П, яи1йага(НсЬо))',... !))1пйоиВиссопОРРсп!, '1се(вйсе ИйпйонВисгопОРРсп>, ЕсЬо, [),... Еи1йаса(ЕсЬо))!,... 'Напй1еЧ1в1Ы11гу', 'са11Ьас)с',... !ТаЕ!, '1се',...
!ОвегЭаса', иегов(1,0)); для создания основного окна программы, Затем объекты СЛ добавляются опе- раторами типа ЫЗ = и1сопгго1(.. 'Рагепс!, Ы,... Функция пгсоасгот('Ргорегеуйаее1', Чагве1, ...) задает пользовательское интерфейсное управление с заданными свойствами и возвращает его манипулятор. ~~Б2 Б Б БОп1Ся2, Бпогша11хед2,... 'Са11ЬасК', 21се(>геяеС ривЬЬиССоп Са11ЬасК>, ЯСЬо, П, Яи1даса(ЯСЬо))',...
БропСЯ1хе2, 10,... БЫяСЬохТор2, О,... Бров1С1оп2, [0.710583153347732 0.508951406649616... 0.211663066954644 0.0767263427109974],... 23сг1п52, БйевеСБ,... БТаЯБ, 'геяеС ривЬЬиССоп'); которые добавляют кнопку йевеС. Отметим, что эти команды явно описывают свойства, которые изначально были определены с помощью контролера свойств редактора раскладки С[ЛПЕ. Наконец, обратим ваше внимание на то, что функция 11Яиге была введена в 3 3.2, а функция и1сопсго1 обеспечивает пользовательское управление интерфейсом (т.е, объектом С1Л) в текущем окне программы, учитывая свойства пар имя/значение (например, пары 'ТаЯБ и 'гевеС ривЬЬигсоп'), и возвращает ее манипулятор.
Б.2.2. Открытие окна и вывод функций Первые две функции, расположенные после блока инициализации в исходном С1Л М-файле, называются функциями открытия и выеода. Эти две функции выполняются сразу после того, как СШ становится виден пользователю на экране, и когда СП1 возвращает свой вывод в командную строку или в вызвавшую его программу. Обеим функциям передаются аргументы ЬОЬ]есС, ечепсдаСа и Ьапд1ев. (Эти аргументы будут также входами вызывающих функций в следующих двух параграфах).
Аргумент ЬОЬ]есС является манипулятором графического объекта, ечепсдаса зарезервирован для будущего использования, а Ьапд1ев — это структура, которая обеспечивает манипуляторы объектов интерфейса, а также любых специфических данных пользователя или приложения. Чтобы реализовать задуманную функциональность интерфейса 1СЕ (см.
справочный текст), обе функции 1се Ореп[пбрсп и 1се Оисригрсп должны быть расширением «скелетных» версий исходного С1Л М-файла. Вот этот расширяющий блок«: ТипсС1оп 1се Ореп1пбрсп[ЬОЬ]есС, ечепсдага, Ьапд1ея, чагаг51п) % 9Ьеп 1СЕ 1в орепед, рег1огш Ъав[с 1п[С1а11хаС[оп [е.Я., весир % Я1оЬа1в, ...) Ье1оге 1С 1в шаде ч[я[Ь1е. % Яес 1СЕ 81оЬа1в Со деХаи1Св. Ьапд1ев.ирдо»п2 = 'попе'; % Иоияе ирдоип всасе Ьалд1ев.р1оСЬох = [О 0 1 1]; % Р1оС агеа рагашегегв 1п р1хе1в Ьапд1ея.веС1 = [О 0; 1 1]; % Сигче 1 сопсго1 ро1псв ьялд1ев.яес2 = [О 0; 1 1]; % сигче 2 сопсго1 ро1псв Ьалд1ев.веСЗ = [О 0; 1 1]; % Сигче 3 сопСго1 ро1пся Ьапд1ев.веС4 = [О 0; 1 1]; % Сигче 4 сопсго1 ро1пСв Ьалд1ев.сигче = 'веС1'; '/ ЯСгисСиге паше о1 ве1ессед сигче Взято из окончательной версии М-файла.
Б.й П 4 1ЕВ (Д~З Ьап61ев.стпйех = 1; '/, 1пйех оХ яе1ессей сигче Ьап61ев.лойе = 0„ % 1пйех о1 яе1ессей сопСго1 ро1пС Ьап61ев.Ье1оч = 1; % 1пйех оХ лойе Ье1он сопсго1 рош Ьел61ев.аЬоче = 2; '/ 1пйех о1 лойе аЬоче соптго1 ро1пс Ьап61ев.вшооСЬ = [О; 0; 0; 0); % Сотне вшоосЬ1пя вхасев Ьапй1ев.в1оре = [О; 0; 0; 0); % Сигче епй я1оре сопсго1 вСасев Ьвл61ев.с61 = [О; 0; 0; 0); % Сигче СОР всасев Ьал61ев.р61 = [О; 0; 0; 0); % Сигче РОР зсасея Ьвлй1ев.оисрис = П; % Оисрис 1шаце Ьал61е Ьел61ез.й1 = [); % 1приС РРРв алй СОРв Ьал61ев.со1огсуре = 'гяЬ'; % 1прис 1шаНе со1ог врасе Ьал61ея.
1приС = П; % 1прис 1шаде йаса Ьап61ев.1шадешар = 1; % 1шахе шар епаЬ1е Ьалй1ея.Ьагшар = 1; % Наг шар епаЬ[е Ьапй1ез.ягауЬаг = [); % Рвеийо (ятау) Ьат 1шахе Ьапй1ев.со1огЬаг = П; '/. Со1ог (Ьие) Ьаг 1шаде % Ргосевв РгорегСу Наше/Рторегсу Уа1ие 1прис агВишепс ра1гв. ча1С = 'оп'; 11 (пагя1п > 3) Хог 1 = 1:2:(пагя1п — 3) 11 пагяш - 3 == 1 ЬтеаЬ; епй зя1СсЬ 1очег(чагатдш(1)) саве '1шаяе' 11 п61шв(натагя1п(1 + 1)) == 3 Ьялй1ев.[приС = чататя1п(1 + 1); е1ве11 п61шя(чагаг51п(1 + 1)) == 2 Ьалй1ея.1приС = сас(3, чатагд1п(1 + 1), нагагя1п(1 + 1), чагатдшИ + 1)); епй Ьап61ев. 1приС = йоиЬ1е(Ьапй1ев.1прис); 1присшах = шах(Ьап61ея.1прис(:)); 11 гприсшах > 255 Ьапй1ез.1приС = Ьаий1ев.шриС / 55535; е1ве11 хпритшах > 1 Ьалй1ея.1приС = Ьал61ея.1приС / 255; епй саве 'врасе' Ьал61ев.
со1огсуре = 1очет(чататя1п(1 + 1)); вн1ссЬ Ьал61ев. со1огсуре саве 'сшу' 11вС = ~'СИУ' 'Суал' 'Иадепта' 'Уе11он'); саве ~'асяс', 'у1Н') 11зС = ('У1Ц' 'Еиш1папсе' 'Ние' 'ЯаСигастоп'); Ьал61ев.со1огсуре = 'асяс'; (в4 пр, в саве 'усЬст' 1хвС = ~'УСЬСт' 'Ьиш1иаисе' 'В1ие' '01ттетеисе' 'Неб 01ттетеисе'); савв 'Ьвн' 11вс = х'НВЧ' 'Ние' 'Васитасхои' 'Уа1ие'); саве 'Ь|1' 11вс С'Н81' 'Ние' 'Васитас1ои' '1исеивхсу'); осЬетыхве 1хвс С'НОВ' 'Ней' 'Степи' 'В1ие'); Ьаш11ев.со1отсуре = 'тВЬ'; еий вес(Ьаи41ев.сошроиеис рорир, 'Зст1иН', 11вс); саве 'ва1с' юа1с = 1овег(чатат81и(1 е 1)); еш1 еш1 еий / Сгеасе реево- аид йи11-со1от шаррхиН Ьатв (Нтаув аий Ьиев).
Всоте '/ а со1от врасе соичетпес( 1х128х3 1хие оХ еасЬ Ьат 1от шаррхи8. х1 0:1/127:1; х 0:1/б:1; х = х'; у- [1100011; 0111000; 0001110]; ВЬ = тершас(хх, [1 1 3]); сЬ хисетр18(х, у, х1'); сЬ = гевЬаре(сЬ, [1 128 3]); 1й встсшр(Ьаий1ев.со1отсуре, 'твЬ') ВЬ = еча1(['тНЬ2' Ьаи61ев.со1отпуре '(НЬ) ']); сЬ = ена1(['тНЬ2' Ьаий1ев.со1отсуре '(сЬ)']); еий НЬ = тоиий(255 е цЬ); НЬ шах(0, ВЬ); ВЬ шхи(255, НЪ); сЬ = топай(255 е сЬ); сЬ шах(0, сЬ); сЬ шхи(255, сЬ); Ьаий1ев. НтауЬат = вЬ; Ьаид1ев.со1отЬаг = сЬ; '/ Оо со1от врасе Стаив1отшв, с1ашр Со [О, 255], сошрипе ЬхвпоНташв / аиб сапи1асхче 61вст1Ьисхои йшсс1оив, аий стеасе оисрис 118ите.
х1 в1хе(Ьаш11ев.хириС, 1) 11 вттсшр(Ьаи61ев.со1оттуре, 'тВЬ') ЬапЫ1ев.харис еча1(['тНЬ2' Ьаи61ев.со1отсуре '(Ьапо1ев.хприС)']); еш1 Ьаи61ев.1ирис = то~шд(255 е Ьаи61ев.1ирис); ЬиЫ1ев.1ирис = шах(0, ЬаЫ1ев.1ирис); Ьаи61ев.1ириС = ш1и(255, Ьаи61ев.1ириС); 1от х 1:3 со1ог = Ьаис11ев.1ирис(:, :, х); 61 = Ьхвс(со1от(:), 0:255); Ьаж11ев.йт = [Ьаий1ев.с(Х; Ж / шахИ1(:))]; Ы = 61 / виш(ит(:)); 61 = сапвиш(от); Ьаи61ев. 61 [Ьалн11ев. Ж; йх]; ( Б.й.
П ~ Ф Ш )СЕ ° 55) 11Епте; Ьвл61ев.опгрпС = ЕСХ; еп6 % Оошрпге 1СЕ'в всгееп ров1САоп ап6 61вр1ау 1шабе/ЕгарЬ. веС(0, 'Оп1Св', 'р1хе1в'); ввх = бег(0, 'Бстеепв1хе'); веС(Ьап61ев.1се, 'ОпАСв', 'РАхе1в'); п1вх = Еес(Ьал61ев.все, 'РовАС1оп'); 11 в1ге(Ьап61ев.1прпС, 1) Хвх = ЕеС(Ьап61ев.опСрпС, 'Ров1САоп'); Ъс = Ивг(4) — явях(4)) / 3; 1Х Ьс > 0 Ьс = Ьс + йвх(2); е1ве Ьс 1вх(2) + Хвх(4) — п1вх(4) — 10; еп6 1с = 1вх(1) + (в1хе(Ьап61ев.1прпС, 2) / 4) + (3 е йвг(З) / 4); 1с ш1п(1с, ввх(3) - п1вх(3) — 10); веС(Ьал61ев.1се, 'Роя1С1оп', [Хс Ьс 4бЗ 391]); е1ве Ьс = гопп6((вях(4) — ятях(4)) / 2) - 10; 1с гопп6((вяг(З) — п1вг(З)) / 2) — 10; веС(Ьап61ев.1се„'Ров1С1оп', (1с Ьс п1зз(3) п1зх(4))); еп6 веС(Ьап61ев.1се, 'Оп1Св', 'потша11хе6'); ЕгарЬ(Ьап61ев); геп6ет(Ьап61ев); % ОР6аге Ьап61ев вл6 шансе 1СЕ чаАС Ьейоте ех1С 1Х ге9п1те6.
Еп16ага(ЬОЬ)есС, Ьап61ев); 11 яггсшр1(ча1С, 'оп') п1ча1С(Ьап61ев.1се); еп6 % ХппсС1оп чагагбопС = 1се Оптрпсрсп(ЬОЬ)есг, ечепС6ага, Ьап61ев) % АХСет 1СЕ 1я с1ове6, бег СЬе %шабе 6аСа оХ СЬе спггепС 11Епге % Хог СЬе опгрпС. И 'Ьап61ев' ех1вСв, 1СЕ Авп'С с1ове6 (СЬеге чав % по 'п1ча1С') во опСрпС 11Епге Ьап61е. 1й шах(в1ге(Ьап61ев)) == 0 ХАЕЬ = Еет(бой); АшабеЬ = ЕеС(11ЕЬ.СЬ116геп); 11 шах(ввхе(1шабеЬ)) > 0 Ашабе = бег(1шабеЬ.СЬ116геп); нататбопС111 1шабе.СОаСа; еп6 е1ве чатагбопС(11 = ЬОЬ)есС; еп6 Приложение Б Вместо того, чтобы вдаваться в детали этих функций (см. комментарии, приложение А и справочные разделы конкретных функций), мы отметим некоторые общие свойства функций открытия и вывода: Структура Ьаш)1ев (как видно из множества обращений к ней) играет центральную роль в большинстве СП1 М-файлов.
Она выполняет две основные функции. Поскольку она обеспечивает манипуляторы для всех графических объектов интерфейса, ее можно использовать для доступа к свойствам объектов и их модификации. Например, открывающая функция 1се использует команды веС(Ьаш11ея.1се, 'Оп1Св', 'рйхе1в'); ц1вх = яеС(Ьап61ев.1се, 'Ров1С1оп'); для доступа к размеру и местоположению 1СЕ С1Л (которые даны в пикселах). Эти действия состоят в присвоении свойству Опъсв окна 1се, чей манипулятор доступен в Ьап61ев.1се, значения 'р1хе1в', после чего считывается свойство Ров1с1оп окна (с помощью функции бес).
Функция Яес, которая возвращает значение свойства, ассоциированного с графическим объектом, также используется для получения отображаемой на экране области с помощью оператора ввх = бес(О, 'Ясгеепвйхе'), который имеется в конце открывающей функции. Здесь О является манипулятором дисплея компьютера (т.е. корневого окна), а 'Ястеепвйхе' — это свойство, содержащее его размер. Помимо обеспечения доступа к объектам С1Л, структура Ьаш)1ев является мощным каналом для совместного использования данных в приложениях. Отметим, что в ней хранятся значения по умолчанию двадцати трех глобальных параметров 1се (начиная состоянием мыши в Ьапб1ев.прбоип и заканчивая всем входным изображением в Ьаш)1ев.1прцС).