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