Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006), страница 99
Описание файла
DJVU-файл из архива "Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006)", который расположен в категории "". Всё это находится в предмете "системы распознавания образов" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 99 - страница
Эти параметры должны сохраняться при каждом вызове 1се, поэтому они добавляются к Ьап61ев при запуске 1се Ореп1пярсп. Например, глобальная переменная Ьаги11ев. веС1 создается командой Ьапб1ев.веС1 = [О О; 1 1], где веС1 — это имя поля, хранящего контрольные точки функции отображения цветов, которые надо сохранить в структуре Ьаш11ев, а 10 О; 1 1)— их значения по умолчанию (координаты концевых точек кривой (0,0) и (1, 1)). Перед тем, как завершить выполнение функции, в которой модифицировалась структура Ьатн11ев, необходимо сделать вызова Яи1с)аса(ЬОЬ]есС, Ьаш11ев) и сохранить переменную Ьаш11ев в виде данных приложения в окне с ма- нипулятором ЬОЬ)есС. Функция Натцаса(Н, ВАТА) сохраняет специфические данные в виде окна данных приложения.
Н вЂ” это манипулятор, который идентифицирует окно — он может быть самим окном или любым обьектом этого окна. Б.й П..„.. ФЮ. 1С. БД 2. Как и многие встроенные графические функции, все Ореп1вбрсп обрабатывает входные аргументы [за исключением ЬОЬ] ест, ечепейаса и Ьеп61ев) по парам: имя и значение свойства. Если имеется более трех входных аргументов (т.е. патя1п ) 3), то выполняется цикл, который пропускает входные аргументы по парам [тог 1 = 1:2; [пагя1п 3)]. Для каждой входной пары первый аргумент используется для управления конструкцией вв1ссЬ, вв1ссЬ 1ояег [вагат61п[П), которая обрабатывает второй аргумент соответствующим образом.
Напри- мер, в случае 'врасе', команда Ьап61ев.со1огсуре = 1оиег(чагат61п41+1у); присваивает полю со1огсуре значение второго аргумента входной пары. Это значение затем используется для задания в ]СЕ цветовых компонент выпадающих опций (т. е.
свойства Бсг1пя объекта сошропепс роро). Позже это значение используется для преобразования компонент входного изображения в желаемое пространство посредством команды Ьахк11ев. 1прие = ена1[ ['гбЬ2'... Ьюк11ев.со1огтуре '(Ьап61ев.1прпв)']); где встроенная функция еча1(в) побуждает МАТЕАВ выполнить строку в как команду или оператор (см 3 12.4.1). Если, к примеру, Ьап61ев. 1прис— это 'Ьвч', то еча1от аргумента ['гяЬ2' 'Ьвч' ' [Ьив11ев.1прис) '], означающего соединенную строку 'гбЬ2Ьвч[Ьап61ев.1прис) ', выполняет стандартную команду преобразования компонент входного КСВ -изображения в цвеговое пространство НЯЧ (см.
3 6.2.3). 3. Команда ц1ва1с(Ьапо1ев.т16иге1); в стартовом С]Л М-файле преобразуется в условный оператор 11 всгсшр1[ва1с„ 'оп') и1ва1с(Ьюв11ев.1се); епй в конечной версии функции 1се Ореп1пбрсп. В общем случае команда в1ва1с(116) блокирует выполнение кодового потока МАТЮКАВ до тех пор, пока выполняется ийгеввше или пока окно 11я не будет уничтожено (т.е. закрыто).
]При отсутствии входных аргументов в1вайт эквивалентно и1ва1с[бс1), где функция МАТЬАВ ясХ возвращает манипулятор текущего окна]. Когда 1се не занят выполнением преобразования входного изображения, но сразу возвращает результат (до закрытия 1СЕ СИ), входная пара имя/значения 'ва1с'/'отт ' должна содержаться в обращении. В противном случае, 1СЕ не вернет управление вызвавшей ее программе или командной строке до (БВ П Б тех пор, пока сама она не будет закрыта, т. е. до тех пор, пока пользователь не закончит взаимодействовать с интерфейсом (и с функциями преобразования цвета). В этой ситуации функция 1се Оцсрцсрсп не может получить преобразованное изображение из структуры Ьеп 11ез, поскольку она уже не будет существовать после закрытия СШ.
Как можно обнаружить в окончательной версии функции, 1СЕ извлекает данные изображения из свойства СРаса сохраненного выходного окна преобразованного изображения. Если выходное преобразованное изображение не должно возвращаться функцией 1се, оператор п1иа1С в 1се Ореп1пярсп не выполняется, 1се Опгрпгрсп вызывается сразу после открывающей функции (задолго до закрытия С(Л), и манипулятор выходного окна преобразованного изображения возвращается в вызвавшую программу или в командную строку. Наконец, отметим, что ряд внутренних функций вызывается с помощью 1се Ореп1пярсп. Все они являются внутренними функциями 1се.
Ниже приводится их список. Обратите внимание на то, что эти функции дают дополнительные примеры использования структуры Ьаш11ез при работе с С(Л МАТЬАВ. Например, команды побез = яес11е14(ЬыЫ1ез, Ьап61ез. спгне) пос(ез = йег11е16(Ьаш11ез, ['зев'ппш2згг(1)) ) из внутренних функций ягарЬ и гепбег используются для доступа к заданным интерактивно контрольным точкам различных кривых отображений 1СЕ. В общей форме Г йес11е1с((Я, '11е1с(') возвращает в Р содержимое поля '11еЫ' структуры Б.е /-- 1ппсс1оп ягарЬ(ЬюЫ1ез) '/ 1псегро1асе впе( р1ос шарр1пя 1ппсс1опз апй орсзопа1 ге1егепсе '/ РРГ(з) ог СРГ(з). пос(ез = йес11е1с((Ьапс(1ез, Ьаш11ез.сцгне); с = Ьаш11ез.с1пс(ех; отх О:1/255:1; со10гв 1 й ~г я Ь ); '/ Рог р1есен1зе 11пеаг 1псегро1ас1оп, р1ос а шар, шар + РРР/СРР, ог '/ шар + 3 РРГз/СРРз.
11 "Ьатц(1ез.зшооСЬ(Ьав61ез.с1пцех) 11 ( Ьюи11ез.рею (с) й Ьаш11ез.сс(Х(с)) (з1хе(Ьал61ез.йг, 2) = 0) р1ос(подав(:, 1), подез(:, 2), 'Ь-', псе(ез(:, 1), пойез(:, 2), 'асс', 'Рагепс', Ьаш11ез.спгуе ахез); е1зе11 с ) 1 Окончательная версия М-файла с внутренними функциями.
й.й. П~ й й Ый ййй йй~9 1 = 2 * с — 2 — Ьап61ев.рбмк(с); р1оС(6йх, Ьап61ев.бг(1,:), [со1огв(с) '-'], по6ев(:, 1), побев(:, 2), йЬ-й, побев(:, 1), побея(:, 2), й1сой, 'РатепС', Ьап61ев.сотне ахев); е1яе11 с == 1 1 = Ьал61ез.сМ (с); р1оС(61х, Ьап61ез.бг(1 + 1, :), 'г-', 61х, Ьап61ев.бй(1 + 3,:), 6Хх, Ьап61ея.Ж(1 + 5,:), 'Ь-', побев(:, 1), побея(:, 2), йЬ-й, побев(:, 1), побев(:, 2), йЬой, 'РагепС', Ьап61ев.сотне ахея); еп6 '/ Ро СЬе ваше тот зшооСЬ (спЬ1с вр1гпе) 1пСегро1аС1опв.
е1ве х = 0:0.01:1; 1Х Ьап61ев. в1оре(Ьал61ев. с1пбех) у = вр11пе(побев(:, 1), побев(:, 2), х); е1зе у = вр11пе(побев(:, 1), [О; побев(й, 2); 0], х); еп6 1 = Хтпб(у > 1); у(1) = 1; 1 = гтп6(у < 0); у(1) = 0; 1г ( Ьап61ев.рбмк(с) я Ьап61ея.с6Х(с)) (вузе(Ьап61ев.61, 2) == 0) р1оС(побев(:, 1), побея(:, 2), йЬой, х, у, 'Ь-',,... 'Рагепс', Ьал61ев.скетче ахея); е1ве11 с > 1 1 = 2 * с — 2 — Ьап61ез.рЖ(с); р1оС(6Хх, Ьап61ев.6Х(1,:), [со1огя(с) й-й], побея(:, 1)„ по6ев(:, 2), йЬой, х, у, 'РагепС', Ьал61ев.спгче ахея); е1ве11 с == 1 1 = Ьап61ев.с6Х(с); р1оС(61х, Ьап61ея.61(1 + 1, :)„ 'г-', 6йх, Ьап61ев.Ж(1 + 3, :), 6йх, Ьап61ев.6Х(1 + б, :), 'Ь-', побев(:, 1), побез(:, 2), йЬой, х, у, йЬ-й, 'РагепС', Ьап61ея.сотне ахея); еп6 еп6 '/ Рпс 1еяеп6 11 шоте СЬап Сюо спгчев аге вЬоеп.
з = Ьап61ев.со1огСуре; И всгсшр(я, 'асяс') 'у(Ч' еп6 ~~60 П Б 11 (с == 1) й (Ьап61ев.р62(с) ! Ьап61ев.с6Х(с)) в1 = ['- ' пррег(в(1))]; СХ 1епЯСЬ(в) == 3 в2 = ['- ' баррет(в(2))]; вЗ = ['- ' пррег(з(3))]; е1ве з2 = ['- ' пррег(в(2)) в(З)]; вЗ = ['- ' пррег(з(4)) в(5)]; еп6 е1зе в1=>; з2=>; зЗ=>; еп6 веС(Ьал61ев.ге6 Сехс, 'ЯСг1пц', в1); веС(Ьап61ез.Ятееп Сехс, 'ЯСг(пЯ', в2); веС(Ьап61ев.Ь1пе Сехс, 'ЯСг1пд', вЗ); % -- ХплсС1оп [Спр1оС, х, у] = ситвог(Ь, Ьап61ев) % Ттапв1асе СЬе шопве ров1С1оп Со а соог6(пасе в(СЬ гевресС Со % СЬе сптгепС р1оС атеа, сЬесК 1ог СЬе шопове гп СЬе агеа ап6 1Х во % заве СЬе 1осаС1оп ап6 вг1Се СЬе соог6[патев Ъе1ов СЬе р1оС.
зеС(Ь, 'Уп(св', 'р1хе1в'); р = Вес(Ь, 'СптгепСРо(пС'); х = (р(1, 1) — Ьал61ез.р1оСЬох(1)) / Ьап61ез.р1оСЬох(3); у = (р(1, 2) — Ьап61ев.р1оСЬох(2)) / Ьап61ев.р1оСЬох(4); 5.й х > 1.05 ! х < -0.05 ( у ) 1.05 ! у < -0.05 Спр1оС = 0; е1ве х = шгп(х, 1); х = шах(х, 0); у = ш(п(у, 1); у = шах(у, 0); по6ез = деСХ1е16(Ьап61ев, Ьап61ев.спгче); х = гопп6(256 > х) / 256; Спр1оС = 1; веС(Ьап61ев.апрпС СехС, 'ЯСг1пЯ', ппш2всг(х, 3)); веС(Ьап61ев.опСрпС Сехс, 'ЯССТпЯ', ппш2всг(у, 3)); еп6 зеС(Ь, Оп1Св', 'потша11хе6'); %— ХслсС1оп у = геп6ег(Ьап61ев) % Мар СЬе %прас СшаЯе ал6 Ьаг сошропепСв ап6 сопчегС СЬеш Со НОВ % (1т пее6е6) ал6 61вр1ау.
зеС(Ьап61ез.1се, '1псетгпрС1Ь1е', 'оХХ'); веС(Ьап61ез.1се, 'Ро1псет', 'чатсЬ'); удЬ = Ьап61ев.ягауЬат; усЪ = Ьал61ев. со1огЬаг; у1 = Ьэл61ев.1прпС; шаров = Ьап61ев.пагшар; 1шадеоп = Ьап61ев.1шадешар й в%хе(Ьап61ев. 1приС, 1); Кот 1 = 2:4 по6ев = ЯеС~1е16(Ьал61ев, ['веС' ыип2вСг(1)]); С = 1пС(по6ев, Ьап61ев.вшооСЬ(1), Ьал61ев.в1оре(1)); 1562 и Б е1ве 11 в1оре вр11пе(С(:, 1), С(:, 2), 1) ~ е1ве вр11пе(С(:, 1), [О; С(:, 2); 0], 1); епа епа с = а(с); с = (О, с); с = ш1п(255, с); % -- -% Йшсс1оп опс арте ааоис (1п) % ИаЬе а11 х ча1пев пп1Чпе.
% Ясап 1огеата 1ог поп-пп1~)пе х'в апа Ьпшр СЬе Ь1ЯЬег 1паехеа х- % Ьпт аоп'С ехсееа 1. Ясап СЬе епттге тапЯе. ппаяе 1 / 256; 1ог 1 = 2:в1хе(1п, 1) — 1 11 1п(1, 1) (= гп(1 - 1, 1) 1п(1, 1) = ш1п(1п(1 - 1, 1) + ппаЯе, 1); епа епа % Ясап 1п гечегве Хот поп-пп1опе х'в апа аесгеаве СЬе 1овег 1паехеа % х -- Ьит аоп'С Яо Ье1ов О. ЯСор оп СЬе 11гвС поп-пп1чпе ратг. 11 1п(епа, 1) == 1п(епа — 1, 1) Хог 1 = в1хе(1п, 1):-1:2 1Х 1п(1, 1) (= 1п(1 — 1, 1) 1п(1 — 1, 1) = шах(1п(1, 1) — ппаяе, 0); е1ве ЬгеаЬ; епа епа епа % ?Х сЬе 11гвс сво х'в ате поя сЬе ваше, 1п1с сЬе спгче. 11 1п(1, 1) 1п(2, 1) 1п (00; 11); а ОПС 1П; % Хппсс1оп Я = гЯЬ2сшу(й) % Сопчегг ЯОВ Со СИТ пв1пя 1РТ'в 1шсошр1ешепС.