Похідна зображення

З Вікіпедії, вільної енциклопедії

Похідні́ зобра́ження (англ. image derivatives) можливо обчислювати за допомогою маленьких згорткових фільтрів розміром 2 × 2 чи 3 × 3, таких як оператори Лапласа[en], Собеля, Робертса чи Прюітт.[1] Проте більша маска загалом даватиме краще наближення похідної, й прикладами таких фільтрів є гауссові похідні[2] та фільтри Ґабора.[3] Іноді потрібно видаляти високочастотний шум, і це може бути включено до фільтра, так, що гауссове ядро діятиме як смуговий фільтр.[4] Застосування фільтрів Ґабора[5] в обробці зображень було вмотивовано деякою їхньою подібністю до сприйняття в зоровій системі людини.[6]

Це піксельне значення обчислюється як згортка

де  — ядро похідної,  — значення пікселів в області зображення, а  — оператор, який виконує згортку.

Похідні Собеля

Ядра похідних, відомі як оператор Собеля, визначають наступним чином, для напрямів та відповідно:

і

де тут позначує операцію двовимірної згортки.

Цей оператор роздільний, і його може бути розкладено як добуток ядер інтерполювання та диференціювання, так, що , наприклад, можливо записати як

Похідні Фарида та Сімончеллі

Узагальнити
Перспектива

Фарид і Сімончеллі[7][8] пропонують використовувати пару ядер, одне для інтерполювання, а інше для диференціювання (порівняйте з Собелем вище). Ці ядра, фіксованих розмірів 5 x 5 та 7 x 7, оптимізовано таким чином, що перетворення Фур'є наближує їхній правильний зв'язок із похідною.

У коді Matlab так званим 5-вентильним фільтром є

k  = [0.030320  0.249724  0.439911  0.249724  0.030320];
d  = [0.104550  0.292315  0.000000 -0.292315 -0.104550];
d2 = [0.232905  0.002668 -0.471147  0.002668  0.232905];

А 7-вентильним фільтром є

k  = [ 0.004711  0.069321  0.245410  0.361117  0.245410  0.069321  0.004711];
d  = [ 0.018708  0.125376  0.193091  0.000000 -0.193091 -0.125376 -0.018708];
d2 = [ 0.055336  0.137778 -0.056554 -0.273118 -0.056554  0.137778  0.055336];

Як приклад, похідні першого порядку можливо обчислювати наступним, з використанням Matlab, щоби виконувати згортку

Iu = conv2(d, k, im, 'same');  % похідна по вертикалі (wrt Y)
Iv = conv2(k, d, im, 'same');  % похідна по горизонталі (wrt X)

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

Похідні Гаста

Узагальнити
Перспектива

Фільтри похідних на основі довільних кубічних сплайнів було запропоновано Гастом.[9] Він показав, як можливо правильніше обчислювати похідні як першого, так і другого порядків, за допомогою кубічних або тригонометричних сплайнів. Щоби похідна обчислювалася для центрального пікселя, ефективним фільтрам похідних потрібно мати непарну довжину. Проте будь-який кубічний фільтр допасовується до 4 ви́біркових точок, даючи центр між пікселями. Це розв'язується за допомогою підходу подвійного фільтрування, що дає фільтри розміром 7 x 7. Ідея в тому, щоби спершу фільтрувати інтерполяцією, отримуючи таким чином інтерпольовані значення між пікселями, після чого повторювати процедуру з використанням похідних фільтрів, де центральне значення тепер припадає на центри пікселів. Це легко довести за допомогою асоціативного закону для згортки

Отже, ядром згортки для обчислення похідної з використанням інтерполювального ядра та ядра похідної стає

Також майте на увазі, що згортка комутативна, тому порядок цих двох ядер неважливий, і також можливо вставити похідну другого порядку, як і ядро похідної першого порядку. Ці ядра виводять з того факту, що будь-яку сплайнову поверхню можливо допасувати над квадратною областю пікселів, порівняйте з поверхнями Безьє. Гаст доводить, що таку поверхню можливо виконувати як роздільну згортку

де  — матриця сплайнової основи, а та  — вектори, що містять змінні та , як-от

Тепер можливо встановити ядра згортки в

Похідні першого порядку в центральному пікселі відтак обчислюють як

і

Так само, ядрами похідної другого порядку є

і

Кубічносплайновий фільтр оцінюють у його центрі , й відтак

Подібним чином, похідними першого порядку стають

І подібним же чином похідними другого порядку є

Для обчислення похідних зображення за допомогою наведених вище рівнянь можливо застосовувати й використовувати будь-який кубічний фільтр, як-от Безьє, Ерміта, чи B-сплайни.

У наведеному нижче прикладі мовою Matlab для обчислення похідних використано сплайн Кетмелла — Рома

M = [1,-3,3,-1; -1,4,-5,2; 0,1,0,-1; 0,0,2,0] * 0.5;
u = [0.125;0.25;0.5;1];
up = [0.75;1;1;0];
d = up'*M;
k = u'*M;
Iu = conv2(conv(d,k), conv(k,k), im,'same');  % вертикальна похідна (wrt Y)
Iv = conv2(conv(k,k), conv(d,k), im,'same');  % горизонтальна похідна (wrt X)

Інші підходи

Для обчислення похідних можливо використовувати керовані фільтри.[10] Крім того, Савицький та Голей[11] пропонують підхід[en] поліномного згладжування методом найменших квадратів, який можливо використовувати для обчислення похідних, а Луо зі співавт.[12] обговорюють цей підхід докладніше. Шарр[13][14][15] показує, як створювати фільтри похідних шляхом мінімізації похибки в області Фур'є, а Єне зі співавт.[16] докладніше обговорюють принципи проєктування фільтрів, включно з фільтрами похідних.

Примітки

Посилання

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.