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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

Примітки[ред. | ред. код]

  1. Pratt, W.K., 2007. Digital image processing (4th ed.). John Wiley & Sons, Inc. pp. 465–522 (англ.)
  2. 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. (англ.)
  3. P. Moreno, A. Bernardino, J. Santos-Victor, Improving the sift descriptor with smooth derivative filters, Pattern Recognition Letters 30 (2009) 18–26. (англ.)
  4. J.J. Koenderink, A.J. van Doorn, Generic neighborhood operators, IEEE Trans. Pattern Anal. Mach. Intell. 14 (1992) 597–605. (англ.)
  5. D. Gabor, Theory of communication, J. Inst. Electr. Eng. 93 (1946) 429–457. (англ.)
  6. 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. (англ.)
  7. H. Farid and E. P. Simoncelli, Differentiation of discrete multi-dimensional signals, IEEE Trans Image Processing, vol.13(4), pp. 496--508, Apr 2004. (англ.)
  8. 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. (англ.)
  9. 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. (англ.)
  10. W.T. Freeman, E.H. Adelson, The design and use of steerable filters, IEEE Trans. Pattern Anal. Mach. Intell. 13 (1991) 891–906. (англ.)
  11. A. Savitzky, M.J.E. Golay, Smoothing and differentiation of data by simplified least squares procedures, Anal. Chem. 36 (1964) 1627–1639. (англ.)
  12. J. Luo, K. Ying, P. He, J. Bai, Properties of Savitzky–Golay digital differentiators, Digit. Signal Process. 15 (2005) 122–136. (англ.)
  13. H. Scharr, Optimal second order derivative filter families for transparent motion estimation, in: M. Domanski, R. Stasinski, M. Bartkowiak (Eds.), EUSIPCO 2007. (англ.)
  14. Scharr, Hanno, 2000, Dissertation (in German), Optimal Operators in Digital Image Processing . (англ.)
  15. B. Jähne, H. Scharr, and S. Körkel. Principles of filter design. In Handbook of Computer Vision and Applications. Academic Press, 1999. (англ.)
  16. 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-сплайнів, та тригонометричних сплайнів.