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

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

: 

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

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

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

:  і 

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

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

: 

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

Фарид і Сімончеллі пропонують використовувати пару ядер, одне для інтерполювання, а інше для диференціювання (порівняйте з Собелем вище). Ці ядра, фіксованих розмірів 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)


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

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

Фільтри похідних на основі довільних кубічних сплайнів було запропоновано Гастом. Він показав, як можливо правильніше обчислювати похідні як першого, так і другого порядків, за допомогою кубічних або тригонометричних сплайнів. Щоби похідна обчислювалася для центрального пікселя, ефективним фільтрам похідних потрібно мати непарну довжину. Проте будь-який кубічний фільтр допасовується до 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)


Інші підходи

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

Примітки


Посилання

*  derivative5.m Фарид і Сімончеллі: 5-вентильні перша та друга дискретні похідні.
*  derivative7.m Фарид і Сімончеллі: 7-вентильні перша та друга дискретні похідні
*  kernel.m Гаст: 1-а та 2-га дискретні похідні для кубічних сплайнів, сплайнів Кетмелла — Рома, сплайнів Безьє, B-сплайнів, та тригонометричних сплайнів.

Зображення
