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

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

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

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

p'u=𝐝G

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

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

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

p'u=[+1+2+1000121]*𝐆 і p'v=[+101+202+101]*𝐆

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

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

[+101+202+101]=[121][+101]

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

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

p'u=𝐝(𝐤G)=(𝐝𝐤)G

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

𝐤𝐝=𝐝𝐤

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

p(u,v)=𝐮TMGMT𝐯=MT𝐮𝐯TMG

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

𝐮=[u3,u2,u,1]T
𝐯=[v3,v2,v,1]T

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

𝐤=𝐮TM=(MT𝐯)T
𝐝=𝐮TuM=(MT𝐯v)T
𝐝𝟐=2𝐮Tu2M=(MT2𝐯v2)T

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

Du=𝐮TuM𝐮TMGMT𝐯MT𝐯=𝐝𝐤(𝐤𝐤)TG

і

Dv=𝐮TM𝐮TMGMT𝐯MT𝐯v=𝐤𝐤(𝐝𝐤)TG

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

Du2=2𝐮Tu2M𝐮TMGMT𝐯MT𝐯=𝐝𝟐𝐤(𝐤𝐤)TG

і

Dv2=𝐮TM𝐮TMGMT𝐯MT2𝐯v2=𝐤𝐤(𝐝𝟐𝐤)TG

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

𝐮=𝐯=[(0.5)3,(0.5)2,0.5,1]T=[0.125,0.25,0.5,1]T

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

𝐮(0.5)u=𝐯(0.5)v=[3(0.5)2,2(0.5),1,0]T=[0.75,1,1,0]T

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

d2𝐮(0.5)u2=d2𝐯(0.5)dv2=[6(0.5),2,0,0]T=[3,2,0,0]T

Для обчислення похідних зображення за допомогою наведених вище рівнянь можливо застосовувати й використовувати будь-який кубічний фільтр, як-от Безьє, Ерміта, чи 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] пропонують Шаблон:Нп поліномного згладжування методом найменших квадратів, який можливо використовувати для обчислення похідних, а Луо зі співавт.[12] обговорюють цей підхід докладніше. Шарр[13][14][15] показує, як створювати фільтри похідних шляхом мінімізації похибки в області Фур'є, а Єне зі співавт.[16] докладніше обговорюють принципи проєктування фільтрів, включно з фільтрами похідних.

Примітки

Шаблон:Примітки

Посилання

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