Похідні́ зобра́ження () можливо обчислювати за допомогою маленьких згорткових фільтрів розміром 2 × 2 чи 3 × 3, таких як оператори , Собеля, Робертса чи Прюітт.Pratt, W.K., 2007. Digital image processing (4th ed.). John Wiley & Sons, Inc. pp. 465–522 Проте більша маска загалом даватиме краще наближення похідної, й прикладами таких фільтрів є гауссові похідніH. Bouma, A. Vilanova, J.O. Bescós, B.M.T.H. Romeny, F.A. Gerritsen, Fast and accurate gaussian derivatives based on b-splines, in: Proceedings of the 1st International Conference on Scale Space and Variational Methods in Computer Vision, Springer-Verlag, Berlin, Heidelberg, 2007, pp. 406–417. та фільтри Ґабора.P. Moreno, A. Bernardino, J. Santos-Victor, Improving the sift descriptor with smooth derivative filters, Pattern Recognition Letters 30 (2009) 18–26. Іноді потрібно видаляти високочастотний шум, і це може бути включено до фільтра, так, що гауссове ядро діятиме як смуговий фільтр.J.J. Koenderink, A.J. van Doorn, Generic neighborhood operators, IEEE Trans. Pattern Anal. Mach. Intell. 14 (1992) 597–605. Застосування фільтрів ҐабораD. Gabor, Theory of communication, J. Inst. Electr. Eng. 93 (1946) 429–457. в обробці зображень було вмотивовано деякою їхньою подібністю до сприйняття в зоровій системі людини.J.G. Daugman, Complete discrete 2-D Gabor transforms by neural networks for image analysis and compression, IEEE Trans. Acoust. Speech Signal Process. 36 (1988) 1169–1179.

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

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

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

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

і

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

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

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

Фарид і СімончелліH. Farid and E. P. Simoncelli, Differentiation of discrete multi-dimensional signals , IEEE Trans Image Processing, vol.13(4), pp. 496--508, Apr 2004. H. Farid and E. P. Simoncelli, Optimally Rotation-Equivariant Directional Derivative Kernels, Int'l Conf Computer Analysis of Images and Patterns, pp. 207--214, Sep 1997. пропонують використовувати пару ядер, одне для інтерполювання, а інше для диференціювання (порівняйте з Собелем вище). Ці ядра, фіксованих розмірів 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)

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

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

Фільтри похідних на основі довільних кубічних сплайнів було запропоновано Гастом.A. Hast., "Simple filter design for first and second order derivatives by a double filtering approach", Pattern Recognition Letters, Vol. 42, no.1 June, pp. 65--71. 2014. Він показав, як можливо правильніше обчислювати похідні як першого, так і другого порядків, за допомогою кубічних або тригонометричних сплайнів. Щоби похідна обчислювалася для центрального пікселя, ефективним фільтрам похідних потрібно мати непарну довжину. Проте будь-який кубічний фільтр допасовується до 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)

Інші підходи

Для обчислення похідних можливо використовувати керовані фільтри.W.T. Freeman, E.H. Adelson, The design and use of steerable filters, IEEE Trans. Pattern Anal. Mach. Intell. 13 (1991) 891–906. Крім того, Савицький та ГолейA. Savitzky, M.J.E. Golay, Smoothing and differentiation of data by simplified least squares procedures, Anal. Chem. 36 (1964) 1627–1639. пропонують підхід поліномного згладжування методом найменших квадратів, який можливо використовувати для обчислення похідних, а Луо зі співавт.J. Luo, K. Ying, P. He, J. Bai, Properties of Savitzky–Golay digital differentiators, Digit. Signal Process. 15 (2005) 122–136. обговорюють цей підхід докладніше. ШаррH. Scharr, Optimal second order derivative filter families for transparent motion estimation, in: M. Domanski, R. Stasinski, M. Bartkowiak (Eds.), EUSIPCO 2007. Scharr, Hanno, 2000, Dissertation (in German), Optimal Operators in Digital Image Processing . B. Jähne, H. Scharr, and S. Körkel. Principles of filter design. In Handbook of Computer Vision and Applications. Academic Press, 1999. показує, як створювати фільтри похідних шляхом мінімізації похибки в області Фур'є, а Єне зі співавт.B. Jähne, P. Geissler, H. Haussecker (Eds.), Handbook of Computer Vision and Applications with Cdrom, 1st ed., Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1999, pp. 125–151 (Chapter 6). докладніше обговорюють принципи проєктування фільтрів, включно з фільтрами похідних.

Примітки

Посилання

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