과학

컴퓨터로 사진 만지작 거리기(2)-미분필터

컴퓨터로 사진 만지작 거리기(1)-배경지식

https://www.dogdrip.net/454884913

컴퓨터로 사진 만지작 거리기(1)-보충

https://www.dogdrip.net/455071119

컴퓨터로 사진 만지작 거리기(2)-저/고주파 통과 필터

https://www.dogdrip.net/455514649

 

저번 글에서는 푸리에변환한 뒤에 특정 영역의 주파수를 직접 날려버렸습니다

이번에는 다른 방식으로 적용하는 필터를 소개하려 합니다

 

1. 합성곱

합성곱은 다음과 같이 정의됩니다

01conv_def.png

적분 안에 있는 식이 x와 τ로 이루어져 있지만, τ에 대해 정적분했기 때문에 적분결과는 x에 대한 식이 됩니다

알아보기 쉽게 이산화해서

02conv_def_dis.png

라고 하겠습니다

예를 들어 x=0이라고 합시다

그러면 h[0] = f[-∞]g[∞]+...+f[-2]g[2]+f[-1]g[1]+f[0]g[0]+f[1]g[-1]+f[2]g[-2]+f[3]g[-3]+...가 됩니다

f[a]g[-a]는 f[a]는 순서대로, g[a]는 역순으로 곱한 것이라고 할 수 있습니다

x=1이라면 g[a]를 좌우로 뒤집고 한 칸 뒤로 밀어버린 것과 f[a]를 곱해서 더한 것이 되겠습니다

 

실제로 함수의 예를 들어 계산해봅시다

03fg.png

04fg_graph.png

이 두 함수의 합성곱은 삼각형이 왼쪽에서 오른쪽으로 움직이면서

사각형과 겹쳐지는 면적의 그래프가 될 것입니다

 

 

 

2. 2차원 이산 합성곱

이산적인 신호에서의 합성곱은 그냥 곱셈과 덧셈의 반복이라 적분처럼 복잡한 계산은 안 해도 됩니다

다만 조금 귀찮을 뿐입니다

09_2d_conv_3.png

기본적은 계산방법은 같습니다

두 행렬의 같은 위치에 있는 숫자끼리 곱한 것을 전부 더해주면 됩니다

두 행렬의 크기가 다를 경우에는 크기가 작은 행렬을 한칸씩 옮겨주면서 계산해주면 됩니다

10_2d_conv_4.png

앞으로 이동시킬 행렬을 커널이라고 부르겠습니다

 

3. 푸리에 변환에 대한 정리

푸리에 변환에 대해 이하와 같은 등식이 성립합니다

f(x)와 g(x)의 푸리에 변환을 각각 F(ω), G(ω)라고 합시다

05fourier_theorem.png

사실 적분이나 함수를 수평이동 했을 때에는 어떻게 되는지에 대한 정리도 있습니다만 다루지는 않을 예정이니 뺐습니다

 

4. 미분필터

세 식 중 첫번째 식을 봅시다

f(x)를 미분해서 푸리에 변환하면 F(ω)에 iω가 곱해지는 결과가 나옵니다

i는 허수단위이며 주파수 성분의 함량과는 관계 없습니다

그러므로 지금은 |ωF(ω)|처럼 다루겠습니다

만약 ω가 0에 가깝다면 어떻게 될까요?

F(ω)가 어지간히 크지 않은 이상, 0에 가까운 ω와 곱해지면 아주 작은 값이 될 것입니다

반대로 ω가 큰 값이라면 F(ω)가 어지간히 작지 않은 이상 ωF(ω)은 큰 값으로 증폭 될 것입니다

 

정리하자면

저주파 ⇒ 작은ω ⇒ 함량이 줄어듦

고주파 ⇒ 큰ω ⇒ 함량이 증폭됨

즉, 사진을 미분하면 고주파 통과 필터와 비슷한 효과를 볼 수 있습니다

06cos.png

파란 선은 y=|cos(x)|, 주황색 선은 y=|x・cos(x)|입니다

정확히 x=1부터 주황색 선이 파란선보다 위에 있는 것을 확인할 수 있습니다

 

저번 글에서 적용한 저/고주파 통과 필터는 푸리에 변환 결과에 필터를 적용하고 사진으로 되돌렸었습니다

(남기고 싶은 영역에는 1, 없애고 싶은 영역에는 0을 곱했습니다)

이번에도 그렇게 하자니, 우리가 다루고 있는 사진은 연속적이지 않기 때문에 가장 낮은 주파수 1입니다

0에 가까운 주파수를 곱할 수 없다는 뜻입니다

그래서 이번에는 사진을 직접 미분해 보겠습니다

07differential_continuous.png

미분은 일반적으로 이렇게 정의됩니다

하지만 사진에서의 미분은 h를 아무리 작게 잡아도 1픽셀(h=1)입니다

그래서 우리는 아래 식에 따라 미분을 할 수 있습니다

08_differential_discrete.png

즉 단순히 이웃한 픽셀값끼리의 뺄셈이 미분이 됩니다

(x는 가로방향, y는 세로방향으로 픽셀이 몇번째인지를 의미합니다)

아래의 커널과 사진의 합성곱으로 미분을 구할 수 있습니다

11_filter_dif_basic.png

사진을 f(x,y), 커널을 g(x,y)라고 하면 f(x,y)*g(x,y)를 구하는 것입니다

f(x,y)*g(x,y)의 푸리에변환은 3.의 두번째 식에 의해 F(ωx,ωy)・G(ωx,ωy)가 되어

사진원본의 푸리에 변환F(ωx,ωy)에 커널의 푸리에변환G(ωx,ωy)을 곱한것이 됩니다

즉 저번 글에서 필터를 적용한 방식과 같은 방식입니다

 

다만, 이렇게 하면 우연히 특정 픽셀에만 노이즈가 섞여서 이상한 값이 있을 경우에

원치 않은 곳에서 경계선이라고 반응해버립니다

그래서 주변 몇개의 픽셀에서 다 같이 큰 변화가 있을때에 경계선이라고 반응하도록 다음과 같은 프리윗커널을 이용합니다

12_filter_dif_prewit.png

왼쪽은 좌우로 큰 변화를 인식하는 커널입니다

사진에서는 세로 경계선으로 나타납니다

오른쪽은 상하로 큰 변화를 인식하는 커널입니다

사진에서는 가로 경계선으로 나타납니다

13_street.png

저번에 등장했던 이 사진에 위의 3*3커널을 적용한 결과는 다음과 같습니다

14_street_edge.png

왼쪽부터 세로방향 경계검출결과, 가로방향 경계 검출결과, 두 결과의 픽셀끼리 덧셈한 결과 입니다

하지만, 이 두 커널은 대각선 방향 경게선은 잘 검출하지 못하는 단점이 있어 실무적으로 많이 쓰이는 커널은 

15_filter_sobel.png

이런 모양의 소벨 커널입니다

위와 같은 사진에 소벨 커널을 적용하면

16_street_edge_sobel.png

작은 차이이지만 사진의 좌하단 바퀴의 윤곽이 선명해진 것을 볼 수 있습니다

 

이 외에도 원래 신호를 두번 미분하여 |(iω)2F(ω)|=|ω2F(ω)|로 0보다 작은 주파수를 더 많이 억제하는 라플라시안 필터, 샤르필터 등

고주파 통과 필터의 효과를 내는 필터는 많습니다

 

 

 

저주파 통과 필터와 비슷한 효과를 내는 평활필터, 가우시안 필터도 다루려고 했습니다만

너무 길어질 것 같아서 이번 글은 여기서 마치도록 하겠습니다

파이썬쟁이한테 갑자기 자바 opengl로 뭘 만들어오라는 숙제를 내주는 교수님이 너무 밉습니다

9개의 댓글

0
2023.01.10

닥쳐라

0
ery
2023.01.10

opengl 갑분등장인데 왜 그걸 java 로 ㅋㅋ

 

그나저나 컴퓨터 비전과 컴퓨터 그래픽스는 다른 영역인데 왜 비전에서 그래픽스로 튀는거지?

0
@ery

수업듣고 복습 삼아 쓰는 중인데

과목이 개론 느낌이라 이것저것 다 맛보기 하는 중이긴 함ㅋㅋ

0
ery
2023.01.10
@낙지는나치를낚지

둘다 매우 훌륭한 분야긴 함. 네가 나중에 갈 커리어와는 별개로 컴퓨터 그래픽스 한번 접해서 gpu 의 동작 원리에 대한 이해를 좀 얻는다면 .. 개발자로서 시야가 꽤 넓어질 듯

0
@ery

제어공학 하다가 인공지능(비전) 좀 기웃 거리다가

회의감이 들어서 다시 제어공학으로 돌아갈까

확 찐 그래픽스로 틀어버릴까 고민중입니다..

0
ery
2023.01.10
@낙지는나치를낚지

http://www.opengl-tutorial.org/kr/

0
2023.01.10

제어공학에서 미분필터며 노이즈필어 이런거 존내만이쓰는데 이미지처리에는 무슨용도임? 같은 수식 쓰더만

0
2023.01.11
@VIPS

위와같이 수직, 수평 혹은 원하는 앵글의 외형을 인식하는데 쓰이기도 함. 커널을 좀 만지면 블러처리시킬 수도 있고 그럼

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 11 14 일 전
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23