진동- 같은 운동을 반복하는 것

정지해있는 물체 - 겉보기에는 움직이지 않는 것처럼 보이지만 외부에서 작용하는 영향이 없을수 없으므로 실제로는 움직이고있음

ex)시계추의 운동, 용수철에 매달린 물체, 그네, 철판의 진동 악기의 진동등

 

진동개념이 중요한이유?

역학, 전자기학, 파동과 빛, 양자역학, 고체물리, 소립자, 초끈이론등 모든 물리분야에서 기본개념을 이해하거나 수많은 현상을 설명하기 위해 사용됨.

 

 기본물리량

주기 - 진동을 한 번 하는데 걸리는 시간

진동수 또는 주파수 - 1초동안 진동하는 횟수

공명 - 진자에서 고유 진동 주기에 맞추어 외부에서 힘을 가하면 진폭을 크게 할 수 있는데, 이를 공명 혹은 공진이라함.

ex)그네타기, tv체널 맞추기등 실제로 1850년 프랑스에서 478명의 군인들이 쿵쿵 발을 맞추며 앙제 다리를 걸어가다가 다리가 무너진 사건이있음

 

원자와 진동

진자들이 많이 연결되어 만들어지는 출렁거림 -> 파동 예)소리

파동- 매질을 통해 운동이나 에너지가 전달되는 현상 ex)물결,파도,소리등

빛(전자기파) - 자유공간에서 일정한 속도

중력파 - 빛의 속도와 일치

 

파동과 관련된 물리용어

진폭: 파동의 세기

마루:파동에서 가장 높은곳

골: 파동에서 가장 낮은곳

파장: 마루와 다음 마루사이의 거리

주기: 어떤 한 곳에서 마루가 반복되는 최소시간

진동수 혹은 주파수 : 어떤 한 곳에서 1초동안 지나가는 마루의 갯수

 

파동의 종류

횡파(가로파동): 파동의 진행방향과 진동방향이 서로 수직인 파동

예)물결, 파도, 빛, 전자기파, 중력파, 지진파의 s파등

 

종파(세로파동): 파동의 진행방향과 진동방향이 같은 파동

예) 소리, 지진파의 p파등

진행파:

파가 매질을 통해 에너지를 싣고 한 지점에서 다른 지점으로 계속 나아가는 현상

 

정상파:

진폭과 진동수가 같은 두파가 서로 반대방향으로 진행하다 만나서 중첩될때 어느 방향으로도 나아가지 않고 제자리에서 진동

한끝을 고정시킨 진행파는 진행파와 반대파가 만나 서로의 간섭으로 인해 정상파를 이룸

예) 현악기 줄의 진동

 

20세기 이후 물리학 연구분야

우주 탐구:

천체망원경의 도움으로 지구 밖의 세계를 연구하고 우주의 가장자리를 관측

 

작은우주 연구:

원자와 원자를 이루는 작은 입자들의 세상에 대한 연구

 

작은 세계 탐구를 위한 여정

최초의 현미경 발명 - 네덜란드의 레벤후크

200배의 배율을 가진 근대적인 현미경 제작

처음으로 미생물 발견

 

최초의 전자 현미경(1931년)

바이러스 관찰 가능

 

오늘날의 전자현미경

분자구조관찰가능 원자의 표면도 관찰가능

 

원자보다 작은 세계를 보는 현미경은 없음

->원자보다 작은 세계는 입자가속기를 이용 -> 충돌결과 분석

 

원자의 내부

 

원자는 원자핵과 전자로 구성

원자핵은 양전하, 전자는 음전하

 

원자핵은 양성자와 중성자로 구성

양성자는 양전하, 중성자는 전기적으로 중성

양성자와 중성자는 쿼크라고 불리는 보다 작은 입자로 구성됨

쿼크들과 전자의 크기는 엄청작음 10의-18승보다 작음

 

원소 존재의 신호

라부아지에 - 두개 이상의 원소가 결합하는 법칙을 발견-질량보존의 법칙: 화학반응 전후 반응에 참여한 물질의 총량은 변화하지 않는다

게이뤼삭 - 기체반응의 법칙: 수소와 산소가 결합하여 물이 발생할때 두원소의 결합비가 항상 일정

 

돌턴의 원자모형

서로 다른 원소는 각각 고유의 형태를 지닌 원자를 가지고 있으며 동일한 원소의 원자들은 그 성질이 같다.

원자는 마치 당구공처럼 단단해서 깨질수없음

원소들이 서로 결합함으로써 분자를 구성(아보가드로에의해 분자라는 개념이 도입)

서로 다른 원소들의 관계를 이용하여 원소의 질량을 측정 -> 원자량에 대한 표를 작성

멘델레예프가 원소주기율표를 고안

 

뉴턴의 프리즘 연구

태양빛을 프리즘을 이용해 분해 -> 무지개(가시광선)

유리같은 매질을 통과할때 빛의 파장에 따라 굴절률이 달라서 생기는 현상

모든 가시광선을 조합-> 백색광

 

분광학 

특별한 시료를 통과시킨 빛을 프리즘으로 분해하여 어떤 파장의 빛이 시료를 통과한전후에 변화가 생겼는지를 관찰하고 그 원인에 대해 연구하는 분야

요한 야코프 발머 : 수소원자의 스펙트럼에 규칙성을 발견 발머의 공식으로 정리

사이도어 라이먼 : 새로운 수소의 흡수 스펙트럼 발견 -> 라이먼계열

태양의 흡수 스펙트럼 : 태양이 66퍼센트 이상 철로 구성되어있다고 보여짐

태양의 스펙트럼은 대부분 수소의 흡수 스펙트럼이라고 그 외에 가벼운 원자들의 흡수 스펙트럼이 복합적으로 나타나는 것이며 이것이 결과적으로 철의 흡수 스펙트럼 처럼 보이게 한다는 것을발견

 

톰슨의 음극선 발견

 

진공관 양끝에 전극을 설치하고 높은 전압을 걸어주면 음극에서 미지의 선이 방출되는 것을 발견 이것이 음극선

장애물을 통과하지 못함 

자기장에 의해 그 진행방향이 영향을 받음 -> 전하를 띈 입자

음극에서 방출되기때문에 그 전하를 음이라고 정의하고 전자라 부름

원자는 전기적으로 중성

원자는 음전하를 가진 전자와 양전하를 가진 어떤 것이 있다는 증거

톰슨은 퓡과 같은 원자모형 발표

 

리더퍼드의 원자모형

얇은 금박에 헬륨원자핵을 통과시켜 산란되어 나오는 알파입자를 검출기를 이용하여 관찰 

알파입자의 대부분은 입사방향과 같은 방향으로 산란되었지만 때로는 입사된 방향으로 다튀기도함

(1/8000의 확률)

원자 내부는 거의 텅빈 공간이라고 생각

원자 안에 알파입자만큼 무거운 무엇이 존재한다는 것을 암시 ->원자핵

양전하인 원자핵 주위를 전자가 돌고있다고 생각

태양 둘레를 공전하는 행성과 같은 원자모형 제안

'행성 원자모형'

하지만 회전하는 전하는 빛을 방출하고 원자핵과 충돌하게되는 문제가 있음 -> 원자의 안정성 문제

 

보어의 원자모형

보어의 양자화 조건

원자세계에서 전자는 더 이상 입자로서 행동하지 않고 마치 파동처럼 행동

전자의 파동이 원자핵 둘레에서 정상파를 이루게되면 전자가 에너지를 방출하지않음

원자 스펙트럼

주양자수에 따라 전자가 가질 수 있는 에너지가 결정

전자가 정해진 자신의 궤도를 바꿀때 외부로부터 궤도에 할당된 에너지 차이를 빛의 형태로 흡수하거나 방출

->원자 스펙트럼의 원인

 

흑체복사

자연을 완벽하게 이해할만한 모든 도구를 가지고있다고 믿음

뉴턴의 역학

페러데이와 맥스웰의 전자기학

볼츠만의 통계역학

 

당시 과학으로는 설명 불가능했던 문제

저온에서 고체의 비열은 상수가 아니라는 사실

기존의 전자기학으로 설명할 수 없었던 전하와 원자사이의 관계

열에너지를 가진 물체의 전자기 복사 문제

 

흑체와 레일리-진스 복사법칙

통계역학을 이용하여 계산해본결과 파장이  긴 영역에서는 잘 맞지만 파장이 짧은 쪽에서는 실험과 큰 차이를 보임.

 

플랑크의 복사법칙

E=nhv

진동수가 v인 전자기파의 평균 에너지

 

아이슈타인의 광전효과 설명

금속등의 물질이 고유의 특정 파장보다 짧은 파장을 가진 (따라서 높은 에너지를 가진) 전자기파를 흡수했을때 전자를 내보내는 현상

이 현상을 빛의 입자성을 가정함으로써 설명

 

드브로이의 물질파

아이슈타인과 플랑크의 광자에 대한 연구를 토대로 물질의 이중성을 주장

운동량이 p=mv인 입자는 다음과 같은 파장 알파를 갖는다

알파=h/p

보어의 원자모형을 통해 그 유용성이 증명

 

슈뢰딩거 방정식

보어의 원자모형 설명

전자의 궤도 운동에 대한 각운동량의 효과까지 보여줌

 

양자역학 - 미시적 세계를 기술하기위해 고안됨

슈뢰딩거 방정식과 행렬 역학으로 대표됨.

슈뢰딩거 방정식과 행렬 역학은 같은 현상을 다른 관점에서 설명

 

슈뢰딩거 방정식

드브로이의 물질파 개념을 응용하여 제안

입자의 파동 함수에 대한 복잡한 미분 방정식

 

행렬역학

하이젠베르크가 제안

행렬이라는 수학적인 개념을 통해 미시세계 기술

측정의 순서가 중요함을 인지

하이젠 베르크의 불확정성 원리

입자의 위치와운동량을 동시에 정확히 측정할수없다는 것을 뜻함

'space' 카테고리의 다른 글

우주 물리학 - 시간과 공간에 대해  (0) 2023.04.22
우주물리학 - 우주관  (0) 2023.04.21

고대의 우주관과 현대물리학의 시작

 

신화속의 우주

우주 창세 신화(멜라네시아 대부분 지역,동남 아시아)

->이미 우주는 존재하고있다는 것을 전제 (우주의 기원에 대한 내용 없음)

공통되는 내용: 우주는 혼돈(카오스)에서 질서(코스모스)로 전환

 

우주 창조의 대표적인 여섯 가지 유형(전환되는 계기)

 

1. 창조신처럼 우주가 존재하기 이전에' '존재하는 의지의 힘으로 창조

2. 원인 혹은 세계 거인의 사체에서 우주가 탄생

3. 우주알과 같은 것에서 우주 탄생

4. 세계의 양친이 우주를 만듬

5.자연에 차례차례 우주의 요소가 정리되어가는 진화/출현

6. 바다 밑에서 가져온 진흙으로부터 우주가 창조

 

 

1.창조신처럼 우주가 존재하기 이전에 '존재하는 의지의힘으로'창조

창세기에서 혼돈이 지배하는 암흑을 향해 하느님이 '빛이 있으라'라고 말하자 우주가 개벽함.

 

5. 자연에 차례차례 우주의 요소가 정리되어가는 진화/출현

홍수 후에 초목과 생물이 자연스럽게 출현하는 것에서 유추함.

이집트의 천지창조설- 처음에 '누'라는 원초의 바다에서 원초의 언덕이 솟아오르고 그후 여신 누토가 우뚝 솟아 하늘이됨

수마트라 남부의 레장족 - 원초의 허무에서 물이 흘러나오고, 대지가 나타나고 하늘이 출현.그후 아홉마리의 새가 날아와 각각 알을 낳고 알이 부화되어 우주의 만물탄생.

 

6.바다 밑에서 가져온 진흙으로부터 우주가 창조

시베리아의 부랴트족 - 야생 오리가 물속에서 물고 온 진흙으로 창조신이 대지인 우르겐을 만들고 그 위에 식물과 동물을 만듦.

캘리포니아의 인디언 모노족과 만도우족 - 농병아리와 거북이 물에 들어가 흙을가지고오고, 그 흙에서 육지가 만들어짐.

 

4대 문명의 우주론

 

고대 이집트

심연, 무한, 암흑, 불가시성이라는 4가지 특성을 가진 원초의 물인 '누'신이 우주를 창조

'누': 태초 이전부터 이미 존재했고 영원히 존속하는 것.

세계는 무한한 공간에 떠 있는 기포와 같은 것.

 

메소포타미아 지방의 수메르인과 바빌로니아인

아푸스라고 불리는 지하의 거대한 담수를 편평한 원반인 대지가 덮고있고, 땅의 위쪽에는 하늘이 펼쳐져있음

하늘 최상부에 '아누', 중간에 하늘에 '이기기', 아래쪽 하늘에 별이있음.

 

고대중국

개천설: 하늘은 반원형의 뚜껑이며 땅은 공기를 엎어 놓은 형태로, 공통되는 중심을 가진 두개의 돔 모양을 가짐

혼천설: 하늘은 계란과 같이 둥글고, 땅은 난황처럼 중심에 위치하여 지구는 둥글다.

선야설: 무한한 공간 속에서 천체들이 큰 간격을 두고 떠다니고있다.

 

인도

우주의 중앙에 세계의 산이있고, 그 정상에 하늘이, 그리고 그 밑바닥은 지옥으로 통한다.

우리가 사는 대지는 원반 모양으로 퍼져있고, 그 주위를 바다가 둘러싸고있다.

우주적시간에 대해서는

불교-시간은 시작도 끝도 없음(단 영원한것도없음)

자이나교-올라가는 시대와 내려오는 시대를 반복

힌두교-큰불과 홍수를 주기적으로 반복한 후에 우주의 공허가 옴

 

그 외의 우주관

고대구약성서의 우주관

육상의 여러 나라를 포함하는 대지는 전체적으로는 평탄하지만 국부적으로는 산, 계곡, 강등에 의한 변화가 있고 육지의 주변은 바다로 둘러 싸여 있다. 그 지상 세계는 원형이다.

 

그리스 자연철학의 탄생

기원전 600년경, 탈레스

소아시아의 밀레투스 지역(현재의 터기 서해안)

신과 초자연적인 설명에 의존하지않고 자연현상을 논리적으로 설명하려함

 

기원전 5세기경 피타고라스

피타고라스는 자연을 이해하는 중요한 언어로서 수학의 중요성을 거의 최초로 인식했던 인물임

 

기원전 5세기경 헤라클레이토스

우주의 본질은 변화이다 하지만 파르메니데스는 세상은 변화하지않는것으로 생각함

엠페도클레스는 대단히 복잡한 자연현상을 자연을 이루는 기본원소와 그들 사이에 존재하는 상호적인 관계로 이해할수있다고 주장함.

아낙사고라스는 모든 물질은 더 이상 쪼갤수없는 눈에 보이지 않는 무한히 작은 씨앗으로 만들어졌다고 생각

물질도 아주작은 것으로 무한히 나눌수있다고 생각

데모크리토스는 물질을 일정수준으로 작게나누면 더이상 쪼갤수없는 상태가되는데 모든 물질은 이처럼 눈에 보이지않는 더이상 쪼갤 수 없는 물질로 되어있다는 것.이걸 아톰이라함

 

초기 우주모형

플라톤

자연에 정 다면체가 다섯개밖에 없다는 유클리드의 발견에 주목하여서 

이 정다면체가 차례로 기본원소인 흙,물,공기,불을 상징하고 있으며 나머지 하나인 정이십면체는 신성한 다섯번째 원소를 상징한다고 생각 -> 이 원소가 하늘에 떠 있는 천체를 구성함으로써 지상과 하늘을 구분할 수 있다고 생각

하늘천체를 움직이는 천체와 움직이지않는 천체로 구분하고 움직이지 않는 천체는 유한한 크기의 천구에 고정되어있다고 생각. 플라톤의 우주모형은 최초의 우주모형

아리스토텔레스

태양과 행성들을 완벽한 도형인 원궤도를 가지고 지구 둘레를 공전한다고 생각 - 동심우주론

->본격적인 천동설의 시작

아리스타르코스

지동성 주장

지구가 태양 둘레를 공전하고있다면 당연히 관측되어야 할 연주시차가 발견되지않아서 주목 못받음 -> 이 이유는 우주의 크기가 매우 크고 별들이 멀리있기 때문에 연주시차가 관측되지않는다고 반박함.

프톨레마이오스

지구와 무게추의 질량이 우주의 중심이며, 지구와 무게추는 질량 중심에 대해 서로 공전 주전원이 28개나 있을만큼 복잡한 우주모형 당시 관측가능한 천문현상을 모두 설명 일식과 월식 예측

 

지동설과 행성 운동 법칙

코페르니쿠스

지동성을 언급하였고 태양이 우주의 중심에 위치하고 지구가 태양 둘레를 공전한다면 행성의 역행과 같은천문현상들을 자연스럽게 이해할수있다고 생각함.프톨레마이오스의 천동설보다 많은수의 주전원을 가지고있음

행성의 궤도가 정원이라고 생각했지만 실제의 관측 결과는 태양과 행성의 거리가 일정하지않음.

티코브라헤 

동 시대를 포함해서 가장 많은 양의 별과 행성의 관측자료를 남김

우주의 중심에 지구가 존재하며 마치 행성을 위성처럼 거느린 태양이 지구 둘레를 공전한다고 생각

(코페르니쿠스의 지동설+프톨레마이오스의 철학)

 

케플러

스승인 티코의 정교한 천체관측 결과를 분석하여 케플러의 행성운동법칙을 발견

케플러의 행성운동법칙

1.태양둘레를 도는 행성은 태양을 하나의 초점으로하는 타원궤도를 갖는다.(타원궤도를 받아들이면서 행성의 주전원이 사라짐)

2. 행성이 태양 둘레를 공전할때 태양의 가까운곳을 지날때는 속도가 빨라지고 태양에서 먼 곳을 지날때는 행성의 공전 속도가 느려지며, 행성과 태양을 잇는 직선은 같은시간 간격 동안 동일한 면적의 부채꼴을 그림.

3. 태양으로부터 먼 곳에 위치한 행성은 가까운 곳에 위치한  행성보다 태양 둘레를 느리게 공전하며 그 주기는 태양과 행성의 평균적인 거리와 일정한 관계가 있다 - 조화의 법칙

중력의 발견

갈릴레이

달의 분화구를 처음으로 발견

목성의 위성과 태양의 흑점을 발견

피사의 사탑 낙하실험을 통하여 낙하하는 물체의 속도는 물체의 질량과 아무런 관계가 없다는 사실을 증명

가속도가 일정한 경우 물체의 이동거리가 시간의 제곱에 비례한다는 것을 발견

코페르니쿠스의 지동설을 옹호하는 책을 썼지만 이단으로 인정되어 일생동안 가택 연금

 

뉴턴

행성의 운동이 중력에 의한 것이며 케플러의 행성운동법칙들이 자신이 발견한 중력의 자연스러운 결과라는 사실을 증명

-> 고전역학의 확립

운동법칙

제1법칙 관성에 대한 정의

관성이란 물체가 외부에서 힘이 작용하지않는다면 원래의 운동상태가 변화하기 않으려는 성질

제2법칙 운동의 변화와 관련

질량과 속도의 곱을 운동량이라고 정의할때 외부에서 물체의 힘을 작용시키면 이 힘의 크기가 운동량의 시간에 대한 변화율고 같고 그 방향은 작용시킨 힘의 방향을 따른다.

제3법칙 작용과 반작용에 대한 것

모든 작용에는 그 크기가 같고 방향이 반대인 반작용이 작용한다.

 

만유인력의 법칙 두물체가 끌어당기는 힘은 두물체의 질량의 곱에 비례하고 거리의 제곱에 반비례한다.

 

뉴턴은 우주가 유한하다고 생각

1692년 벤틀리-만약 뉴턴의 중력이론이 올바른 것이고 별들이 유한한 우주공간에 펼쳐져있다면 결국 모든 별들은 중력에 의해 서로 충돌하여 거대한 불덩어리를 일으킬것

올버스: 무한 우주의 신봉자 밤하늘이 어두운 이유는 별들사이에 존재할수있는 먼지때문임

 

팽창하는 우주

모든 은하로부터 나오는 빛은 적색편이가 나타나고 지구로부터 멀리 떨어진 은하일수록 그 정도는 더욱 크다는 것을 발견 ->광원, 즉 은하가 멀어짐으로써 나타나는 도플러 효과

최근 관측결과 안드로메다 은하는 대략 초속 110km의 속도로 다가옴

 

허블

24개 은하에 대한 적색편이를 자세히 관측하여 은하가 위치한 거리와 후퇴속도 사이에 일정한 관계가 성립한다는 사실을 알아냄.

v=Hd

여기서 v는 은하의 후퇴속도, d는 지구와 은하사이의 거리, H는 허블상수임.

 

우주가 거대한 폭발을 통해 탄생-> 빅뱅이론

프리드먼의 지도를 받았던 가모프가 프리드먼과 르메트르에 의해 제기된 우주 폭발과 관련된 이론을 정교하게 다듬어 1948년 알퍼와 함께 발표

크기가 없고 에너지가 무한대인 하나의 특이점이 폭발하여 우주가 탄생

 

빛의 화석과 흑체복사

우주배경복사의 발견

잡음이 항상 일정한 수준으로 발생하고 방향에도 상관이 없다는 사실을 관측 이는 절대온도 3.5k에 해당

일부 물리학자들은 이 복사가 가모프가 이야기한 태초의 빛의 흔적이라는 사실을 알아챔

호일-우주는 변화하지 않는다고 생각

호일은 정상우론자의 신봉자로 가모프의 이론을 소리만큰이론이라고 조롱

'space' 카테고리의 다른 글

우주 물리학 - 시간과 공간에 대해  (0) 2023.04.22
우주물리학 - 원자  (1) 2023.04.21

y(t) = s(t)+n(t)

y(t): 시간 t에 측정된 결과값

s(t): 실제 잡음이 없는 실제 신호값

n(t): 환경적인 요인(열, 전기적)에 의하여 발생되는 잡음(노이즈) 신호값

영상에서의 잡음(노이즈)의 종류

 

광전자에 의한 노이즈:

광소자노이즈

열에 의한 노이즈

 

임펄스성 노이즈:

'salt and pepper"노이즈(소금과 후추를 뿌려놓은것처럼 잡음이 점을 흩뿌려져있듯이 생겨서 그럼)

가우시안 노이즈, 임펄스 노이즈

 

구조적 노이즈:

압축과정에 의한 노이즈,

상호간섭에 의한 노이즈등

 

잡음제거

가우시안 잡음: 정규 분포를 갖는 잡음, 영상의 픽셀 값으로부터 불규칙적으로 벗어나지만, 뚜렷하게 벗어나지 않음

임펄스 잡음: 영상의 픽셀 값과는 뚜렷하게 다른 픽셀 값에 의한 잡음. 0,255와 같은 뚜렷하게 잘못된 밝기 값을 갖는 화소

잡음제거 알고리즘

 

평균 마스크:

가우시안 노이즈를 줄이는데 효과적

임펄스 노이즈에는 비효과적

영상의 대비를 약화시킴.

중간값 필터링:

임펄스 잡음을 제거하기위한 효과적인 방법

경계선을 보존 또는 강화

 

 

'computer_vision' 카테고리의 다른 글

영상 영역 처리  (0) 2023.04.19
이진화  (0) 2023.04.17
히스토그램(histogram)  (0) 2023.04.16
픽셀기반 영상처리-산술연산  (0) 2023.04.16
영상처리  (0) 2023.04.16

영상신호 영역처리란?

출력화소를 만들기위해서 입력 화소 뿐만 아니라 입력화소 주위에있는 화소들을 사용하여 컨볼루션을 통하여 이루어짐

디지털영상에서 화소간의 관계

디지털 영상에서 각각의 화소는 고정된 위치를 가지며 이 위치는 x,y좌표를 이용하여 표현됩니다. 이때, x,y좌표는 픽셀좌표로 불리며, 각 화소의 위치는 이러한 좌표에 의해 결정됩니다.

또한 영상의 각 화소는 이전화소와 다음화소와의 관계를 가집니다. 이 관계는 픽셀의 순서에 따라 달라지며, 특히 영상처리 기술중에는 인접한 화소들간의 관계가 중요한 역할을 합니다. 인접한 화소들 간의 관계는 대개 4방향(위,아래,왼,오) 또는 

8개 방향(대각선 포함)으로 정의됩니다.

 

실제 영상에서의 공간 주파수

영상공간 주파수는 영상에서의 특정 공간 주기의 변화가 얼마나 빈번하게 나타나는지를 나타내는 매개변수임.

주파수 도메인에서는 고주파수와 저주파수가 있는데 고주파수는 이미지에서 변화가  많은 부분(경계선,엣지 등)을 나타내며, 저주파수는 이미지에서 변화가  적은 부분(평탄한 영역)을 나타냅니다.

 

 

컨볼루션

컨볼루션은 입력영상과 필터(커널)을 이용하여 특징 맵을 만드는 연산 방법임.

입력영상과 필터간의 행렬 곱셈 연산으로 이루어짐 필터는 작은 크기의 행렬로 정의되며, 입력 영상을 지나가면서 필터와의 곱셈을 수행하며, 이 과정에서 특징 맵이 만들어짐.

이때 필터는 입력 영상의 특정 영역을 지정하여 해당 영역에 대한 특징을 추출하는 역할을 함.

 

컨볼루션 마스크는 이미지나 영상 처리에서 사용되는 필터(커널)임.

컨볼루션 마스크는 입력 영상을 지나가면서 각 픽셀의 값을 조정하여 새로운 출력 영상을 생성하는 역할을 함.

수직 경계 검출을 위한 마스크: [-1 0 1; -1 0 1; -1 0 1]

수평 경계 검출을 위한 마스크: [-1 -1 -1; 0 0 0; 1 1 1]

컨볼루션 마스크는 이미지 처리에서 이미지의 특정 부분에 대해 필터를 적용하여 특정한 연산을 수행하는데 사용됨.

이것은 영상처리에서 주변 픽셀의 값에 따라 해당 픽셀의 색상 값을 변경하는데 사용됨.

입력화소의 근방에서 화소의 가중 합으로 표현,

행렬로 표현되는 가중치는 컨볼루션 마스크 혹은 컨볼루션 커널이라함.

이미지 스무딩, 샤프닝, 에지검출등과같은 영상처리에 효과적으로 사용

 

컨볼루션은 각 화소에 필터 u를 적용해 곱의 합을 구하는 연산

 

목적에 따라 다양한 필터를 사용함

 

데이터 형 

opencv는 영상화소를 주로 numpy.uint8형으로 표현함(0,255범위)

0,255범위를 벗어나는 경우에는 문제가 생김

 

컨볼루션 적용(가우시안 스무딩과 엠보싱하기)

import cv2 as cv
import numpy as np

img=cv.imread('soccer.jpg')
img=cv.resize(img,dsize=(0,0),fx=0.4,fy=0.4)
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
cv.putText(gray,'soccer',(10,20),cv.FONT_HERSHEY_SIMPLEX,0.7,(255,255,255),2)
cv.imshow('original',gray)

smooth=np.hstack((cv.GaussianBlur(gray,(5,5),0.0),
                  cv.GaussianBlur(gray,(9,9),0,0),cv.GaussianBlur(gray,(15,15),0.0)))
#opencv를 사용하여 이미지를 smoothing하는 코드. cv.gaussianBlur()함수는 가우시안 필터링을
#수행하는 함수임. 첫번째 인자는 입력이미지이고 두번째 인자는 필터크기(너비와높이)를 정의하는 튜플
#세번째 인자는 x와y의 방향의 표준 편차값을 정의하는 인자 만약 0으로 설정하면 함수가 자동으로 표준편차값 계산
#이 코드는 3개의 가우시안 필터링 결과를 수평으로 연결하여 하나의 이미지로 만들고있음.
#np.hstack함수는 입력된 배열들을 수평 방향으로 연결하여 하나의 배열로 만들어줌. 생성된 이미지는 smooth변수에 할당

cv.imshow('smooth',smooth)

femboss=np.array([[-1.0,0.0,0.0],
                  [0.0,0.0,0.0],
                  [0.0,0.0,1.0]])
#이 커널은 3x3으로 이루어져있으며 이미지에서 주변 픽셀과의 밝기 차이를 계산하여
#픽셀값의 대비를 강조하는 효과를 만듬

gray16=np.int16(gray)
#opencv를 사용하여 로드한 이미지를 int16자료형으로 변환하는 코드
emboss=np.uint8(np.clip(cv.filter2D(gray16,-1,femboss)+128,0,255))
#gray16이라는 이미지에 emboss필터를 적용하여 새로운 이미지를 생성하는 코드
#cv.filter2D함수는 2차원 필터를 이미지에 적용하는 함수 첫번째 인자는 입력 이미지, 두번째 인자는 커널
#세번째 인자는 출력 이미지의 깊이 -1로 설정하면 입력이미지와 동일한 깊이를 가진 출력 이미지 생성
#이 코드에서는 gray16이미지에 femboss필터를 적용하여 새로운 이미지를 생성하고있음
#다음으로 이미지에 128을 더해준다음 0,255사이의 값으로 클리핑 함.
#이는 출력 이미지의 범위를 0~255사이의 값으로 제한하여 출력 이미지가 8비트 정수형으로 표현될수있도록 함

emboss_bad=np.uint8(cv.filter2D(gray16,-1,femboss)+128)
#np.uint8은 numpy에서 제공하는 8비트 부호없는 정수형 자료형 0~255사이의 값 표현 가능
#emboss_bad라는 변수에 gray16이라는 이미지를 엠보싱하여 128을 더해주고 이 이미지를 할당해줌

emboss_worse=cv.filter2D(gray,-1,femboss)
#emboss_worse에 gray라는 이미지를 엠보싱하여 할당해줌

cv.imshow('emboss',emboss)
cv.imshow('emboss_bad',emboss_bad)
cv.imshow('emboss_worse',emboss_worse)
#이미지들을 출력해줌

cv.waitKey()
cv.destroyAllWindows()

결과물

컨볼루션의 평활화: 이미지의 노이즈를 제거하고, 이미지를 부드럽게 만드는 작업.

 

저역통과필터

공간 저역통과 필터는 영상의 저주파 성분을 그대로 통과시키고, 고주파 성분은 감쇄되는 효과

저역통과 컨볼루션 마스크는 현재 입력화소의 밝기값 주변의 8개의 이웃화소밝기값과 자기자신의 밝기값을 평균하는 역할

고주파성분이 많은 영상의 경계선영역의 경우 이러한 저역통과 필터 처리로 인하여 급격한 밝기변화가 완만한 변화로 감쇄되는 현상이 나타남

-> 이러한 시각적효과를 영상흐림화 라고함

 

고역통과필터

고역통과필터는 저역통과필터의 반대효과 

저주파 성분은 감쇄시키는 반면에 고주파 성분은 통과시키는 특징

영상에서 엣지와같은 고주파 성분이 있는 부분을 더욱 강조하는 샤프닝효과

고역통과필터링은 흐릿한 영상을 샤프닝 처리하는데도 많이 사용

 

경계선 검출

영상의 경계선은 사물의 윤곽, 위치, 크기등을 나타내고 영상의 밝기와 색이 급격한 변화가 있는 경우 경계선(엣지)이 존재

다양한 경계선 검출 컴볼루션 마스크

Prewitt 마스크

엣지 검출을 위해 사용되며 이미지에서 엣지를 찾아내는데 유용함.

sobel 마스크

 

'computer_vision' 카테고리의 다른 글

잡음 제거 알고리즘  (0) 2023.04.20
이진화  (0) 2023.04.17
히스토그램(histogram)  (0) 2023.04.16
픽셀기반 영상처리-산술연산  (0) 2023.04.16
영상처리  (0) 2023.04.16

이진화 알고리즘: 임계값 T보다 큰화소는 1, 그렇지 않은 화소는 0으로 바꿈 임계값 결정이 중요함.

히스토그램에서 계곡 부근으로 결정하는 방법(실제 영상에서는 계곡이 아주 많이 나타나서 구현이 쉽지않음)

오츄 알고리즘: 이진화를 최적화 문제로 바라봄. 최적값 t'를 임계값 T로 이용

최적화 문제란 어떤 목적함수를 최소화 또는 최대화하는 변수를 찾는 문제임.

이진화의 경우 목적함수는 이미지의 밝기값 분포를 바탕으로 만들어지며, 임계값이 목적함수를 최소화하거나 최대화하는 값을 찾는것이 목표임.

이때 다시말하자면 이진화란 그레이스케일 이미지에서 임계값을 기준으로 픽셀의 밝기를 두가지 값 중 하나로만 할당하는 과정을 말함. 

이걸 하는 이유는 이 과정을 통해서 이미지의 특정 부분만을 강조하거나, 이미지에서 원하는 객체를 분리하는 목적으로 사용.

 

목적함수 j(t)는 임계값 t의 좋은 정도를 측정함(작을수록 좋음)

t로 이진화했을때 0이되는 화소들의 분산v0(t)과 1이되는 화소들의 분산 v1(t)의 가중치 (n0(t)와 n1(t)) 합을 j로 사용

오츄 알고리즘(python)

 

import cv2 as cv
import sys

img=cv.imread('soccer.jpg')

t,bin_img=cv.threshold(img[:,:,2],0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)
print('오츄 알고리즘이 찾은 최적 임곗값=',t)
#이 코드에서는 img의 파란색 체널(인덱스2)을 가져와서 cv.threshold()함수를 사용하여 오츄알고리즘을
#적용하고있음 cv.threshold()함수는 인자를 가지는데
#첫번째 인자: 입력이미지의 채널(이 코드에서는 인덱스2라 파란색 채널임)
#두번째 인자: 임계값의 초기값(여기선 0)
#세번째 인자: 임계값의 최댓값(여기선 255)
#네번째 인자: 임곗값 적용 방법(여기서는 cv.THRESH_BINARY+cv.THRESH_OTSU)
#cv.THRESH_BINARY는 이진화 방법중 하나로 픽셀값이 임곗값보다 크면 255 작으면 0으로 설정
#cv.THRESH_OTSU는 오츄 알고리즘을 적용하여 최적의 임곗값을 찾아줌
#cv.threshold 함수를 통해 오츄 알고리즘이 최적의 임곗값 t를 찾아내고 이를 변수 t에 저장함,
#마지막으로 t값을 출력하여 최적의 임곗값을 확인할수 있슴.
cv.imshow('R channel',img[:,:,2])
cv.imshow('R channel binarization',bin_img)

cv.waitKey()
cv.destroyAllwindows()

 

오츄 알고리즘은 최적화를 구현하는데 낱낱 탐색 알고리즘을 사용함.

 

매개변수 t가 해공간을 구성하는데,해공간이 작아서 낱낱 탐색이 가능함

L이 256이라면 해공간은 (0,1,2,....,255)

오츄알고리즘에서 사용하는 낱낱탐색 알고리즘은 가능한 모든 임계값을 대상으로 반복적인 계산을 수행하는 알고리즘임.

이 알고리즘은 이미지에서 가능한 모든 임계값에 대해 반복적으로 계산을 수행함. 이때 임계값은 이미지의 픽셀 밝기 값 분포에서 선택됨. 예를들어, 0부터 255까지 모든 값에 대해 각각 임계값으로 선정하여 클래스간 분산과 클래스 내 분산을 계산함. 이후 계산된 분산 값들중 최소값을 찾아서 해당 임계값을 선택함 -> 이렇게 선택된 임계값을 기준으로 이미지를 이진화함.

이 알고리즘은 가능한 모든 임계값을 대상으로 반복적인 계산을 수행하기 때문에 계산 비용이 매우큼

-> 따라서 큰 이미지에 대해서는 처리 시간이 매우 오래걸릴수있음 그러나 이 알고리즘은 이미지 이진화 문제를 해결하는데 있어서 정확한 결과를 보장해줌

 

근데 컴퓨터 비전은 문제를 최적화로 푸는 경우가 많은데 이건 해공간이 너무 커서 낱낱 탐색이 불가능함 그래서 최적해가 아니라 부최적해를 찾는 효율적인 알고리즘을 사용함.

스네이크(물체 외곽선을 찾는 알고리즘)는 탐욕 알고리즘 사용

역전파 알고리즘(기계학습을 위해 미분하는 알고리즘)은 미분 사용

 

 

 

'computer_vision' 카테고리의 다른 글

잡음 제거 알고리즘  (0) 2023.04.20
영상 영역 처리  (0) 2023.04.19
히스토그램(histogram)  (0) 2023.04.16
픽셀기반 영상처리-산술연산  (0) 2023.04.16
영상처리  (0) 2023.04.16

히스토그램은 영상의 명암값 프로필을 보여주기 위해 사용합니다.

이러한 히스토그램은 데이터의 분포를 시각화하는 그래프중 하나로, 데이터의 빈도를 나타내는 도표입니다.

데이터를 구간으로 나누고 각 구간에 속하는 데이터의 빈도를 막대 형태로 표현합니다. 이러한 히스토그램은 데이터의 분포를 파악하고 데이터의 특성을 이해하는데 도움이 됩니다.

히스토그램 평활화: 히스토그램이 평평하게 되도록 영상을 조작해 영상의 명암 대비를 높이는 기법

히스토그램 평활화는 이미지 처리 기술중 하나로, 이미지의 히스토그램을 변환하여 이미지의 대비를 향상시키는 과정을 말합니다. 이미지의 밝기 분포를 재조정하여, 어두운 영역과 밝은 영역의 대비를 높여 이미지의 시각적 품질을 향상시키는 목적으로 사용됩니다.

 

영상의 분포도 평활화

누적 정규화 히스토그램은 다음과 같은 과정을 통해 계산됩니다.

1.히스토그램 계산: 먼저 입력 이미지의 픽셀 값 분포를 나타내는 히스토그램을 계산합니다. 이는 각 픽셀값이 나타나는 빈도수를 계산하여 히스토그램으로 표현하는 것입니다.

2. 정규화: 히스토그램의 값들을 0과1사이의 범위로 정규화 합니다. 이는 히스토그램의 값을 전체 픽셀수로 나누어 주는 과정입니다, 정규화된 히스토그램은 각 픽셀값이 전체 픽셀값 범위에서 차지하는 비율을 나타냅니다.

3. 누적: 정규화된 히스토그램 값을 누적하여 누적 히스토그램을 계산합니다. 이는 각 픽셀값의 누적 분포를 나타내며, 히스토그램에서의 누적 빈도수를 계산하는 것입니다.

 

히스토그램 평활화

import cv2 as cv
import matplotlib.pyplot as plt
#matplotlib 라이브러리는 파이썬에서 데이터를 시각화하기 위해 사용

img=cv.imread('mistyroad.jpg')

gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
#gray변수에 명암 영상으로 변환한것 넣어주기
plt.imshow(gray,cmap='gray'),plt.xticks([]),plt.yticks([]),plt.show()
#plt.imshow함수는 matplotlib를 사용하여 이미지를 표시할때 사용되는 함수로 cmap을 통하여 이미지의 
#컬러맵을 설정할수있습니다 gray로 설정하면 회색 스케일로 표현됩니다.
#plt.xticks([])와 plt.yticks([])는 x축과 y축의 눈금을 표시하지 않도록 설정하는 함수입니다. []를 입력하면 눈금이 설정되지않습니다,
#plt.show함수는 그래프를 화면에 표시하는 함수입니다.

h=cv.calcHist([gray],[0],None,[256],[0,256])
plt.plot(h,color='r',linewidth=1),plt,show()
#cv.calcHist()함수는 opencv에서 이미지의 히스토그램을 계산하는 함수이며, 이미지 데이터에 대한 히스토그램을
#구할수 있습니다. 이 인자들에 대해서 설명할게용
#image: 히스토그램을 계산할 이미지 데이터임. 리스트 형태로 입력하며 여려개의 이미지를 동시에 처리 가능 
#이 코드에서는 gray라는 이미지의 데이터 사용
#channels: 히스토그램을 계산할 체널 그레이스케일 이미지의 경우에는 [0]으로 설정하면됨.
#mask: 이미지의 특정 영역에 대해서만 히스토그램을 계산할때 사용하는 마스크임. 전체 이미지를 사용할 경우네는 None으로 설정.
#histSize: 히스토그램의 빈 개수. 히스토그램의 해상도를 설정 이 코드에서는 [256]으로 설정이되어있어서,
#[256]개의 빈(bin)으로 히스토그램이 계산됨.
#ranges: 히스토그램의 값의 범위. 위 예제에서는 [0,256]으로 설정이되어있어서 0부터 256까지의 값의
#범위 내에서 히스토그램이 계산됨.
#정리하자면 이 코드는 gray라는 이미지데이터에 대한 그레이스케일 이미지의 히스토그램을 계산하고,
#계산된 히스토그램을 h라는 변수에 저장함 이 히스토그램의 빈(bin)개수는 256개로 설정되어있고,
#그 값의 범위는 0부터 256까지로 설정되어있음.

equal=cv.equalizeHist(gray)
plt.imshow(equal,cmap='gray'),plt.xticks([]),plt.yticks([]),plt.show()
#cv.equalizeHist함수는 opencv에서 이미지의 히스토그램을 평활화하는 함수로 이미지의 명암비를
#개선하여 이미지의 전체적인 대비를 향상시키는 데에 사용됨.
#함수의 인자로는 그레이스케일 이미지 데이터가 입력되어야함.

h=cv.calcHist([equal],[0],None,[256],[0,256])
plt.plot(h,color='r',linewidth=1),plt,show()
#equal이라는 이미지 데이터에 대한 히스토그램을 계산하고, 계산된 히스토그램을 h라는 변수에 저장함

 

 

이렇게 히스토그램을 평활화 한것과 안한것에 대하여 각각 구해보면 이러한 결과가 나옴.

이렇듯 히스토그램 평활화를 통해서 우리가 얻을수있는것들은

대비향상: 이미지의 히스토그램이 일정한 범위 내에 고르게 분포되면, 이미지의 명암비가 개선되어 더 선명하고 명확한 이미지를 얻을 수 있습니다.

이미지 개선: 이미지에서 특정 명암 값 범위에 해당하는 정보를 강조하거나, 잡음을 감소시킬수있습니다.

전처리 작업: 히스토그램 평활화는 이미지 전처리 작업으로도 활용될 수 있습니다. 예를들어 이미지 분류나 객체 검출 등의 작업을 수행하기 전에 이미지의 히스토그램을 평활화하여 입력 이미지의 품질을 향상 시키는데에 활용될 수 있습니다.

 

임계값에 의한 영상 이진화처리

만약 임계값을 128로 설정한다면 이미지의 각 픽셀값이 128보다 크면 흰색 128보다 작거나 같으면 검은색으로 변환될 것입니다. 이는 임계값 이상의 픽셀을 흰색으로, 임계값 이하의 픽셀을 검은색으로 구분하는 이진화 처리를 말합니다.

 

임계값(경계값)을 자동으로 결정하는 방법들

 

Gonzalez 이진화 방법: 

1.경계값 T의 초기값을 추정한다( 제안된 추정 값은 영상에서 밝기의 최소값과 최대값 사이의 중간값)

2.경계값T로 이진화(영상분할)한다. 그 결과는 밝기값이 T보다 큰 화소들로 구성된 영역(G1)과 밝기값이 T보다 작은 화소들로 구성된 영역(G2)의 화소들로 나누어진다.

3.영역 G1과 G2에 대하여 화소들의 밝기의 평균값(U1,U2)를 계산한다.

4.연속적으로 다음과 같은 새로운 경계값을 계산한다(T = (U1+U2)/2)

5.연속적인 반복에서 경계값의 변화가 미리 정의된 오차 A보다 적을때까지 단계 2에서 4까지 반복한다.

 

Otsu 이진화방법: 

1. 이미지의 히스토그램을 계산한다.

2. 히스토그램의 각 빈(bin)에 대해 임계값을 변경하면서, 클래스 내 분산과 클래스간 분산을 계산합니다.

3. 각 임계값에 대해 클래스 내 분산과 클래스 간 분산의 비율을 계산합니다.

4. 클래스 내 분산과 클래스 간 분산의 비율이 최대화되는 임계값을 선택합니다.

5.선택된 임계값을 사용하여 이미지를 이진화합니다. 임계값보다 낮은 값은 배경(0)으로, 임계값보다 높은 값은 전경(1)으로 할당됩니다.

 

 

'computer_vision' 카테고리의 다른 글

영상 영역 처리  (0) 2023.04.19
이진화  (0) 2023.04.17
픽셀기반 영상처리-산술연산  (0) 2023.04.16
영상처리  (0) 2023.04.16
colormap  (0) 2023.04.16

영상 처리 연산에는 세종류가 있습니다. 이 세종류를 분류하는데에는 화소가 새로운 값을 어디서 받느냐에 따라 세가지로 구분합니다.

점연산: 자기 자신에게서 받음

영역 연산: 이웃 화소들에서 받음

기하 연산: 기하학적 변환이 정해주는 곳에서 받음

포인터처리: 개별 화소를 독립적으로 처리하는 연산

포인터 처리

산술연산(c언어로 구현하였을때)

산술연산 - 클리핑 처리

 

if (OutImage[i][j] > 255)
OutImage[i][j] = 255;
if (OutImageImage[i][j] < 0)
OutImage[i][j] = 0;

첫번째 if문은 outimage 배열의 i행 j열에 위치한 픽셀갑ㅄ이 255보다 크면 해당 픽셀값을 255로 설정합니다 이는 픽셀값이 255를 초과하지 않도록 클리핑하는 역할을 합니다. 픽셀값이 255를 초과할경우 이미지나 영상에서 픽셀값의 범위를 0부터 255로 제한하여 넘치지않도록 조정하는것이 클리핑 처리 입니다.

마찬가지로 두번째 if문은 outimage배열의 i행 j열에 위치한 픽셀값이 0보다 작으면 해당 픽셀값을 0으로 설정합니다 이러한 클리핑 처리는 이미지나 영상 처리에서 일반적으로 사용되는 작업 중 하나로, 이미지나 영상의 픽셀값이 정해진 범위를 초과하지않도록 조정하여 올바른 픽셀값의 범위를 유지하고, 이미지나 영상의 품질을 향상시키는데 활용될 수 있습니다.

 

원본영상에서 산술연산중 덧셈연산을 통하여 픽셀값에 임의의 상수값을 더해준다면 이미지는 더 밝아지고 뺄셈연산을 통하여 원본의 픽셀값에서 임의의 상수값을 빼준다면 더 어두워집니다.

하지만 이러한 방법보다 원본영상에 임의의 상숫값을 곱해주는 상수 곱 처리 연산을 행하여 준다면 덧셈 연산을 수행하는 것보다 화질이 더 좋게 밝기가 조정이 됩니다.

위- 상수 합 처리 밑- 상수 곱 처리

산술연산 - negative처리

산술식: f(x)=255-x

원본 픽셀값을 255에서 빼주는 산술 연산입니다.

 

이 영상 포인터 처리를 c언어로하여서 구현을 해보겠습니다.

int val;
printf("변화값 입력: ");
scanf("%d", &val);
//입력받은 변화값을 선언한 변수 val에 널어주기
for(int i=0; i<imgSize; i++)
	if(image[i]+val > 255) output[i]=255;
    else if(image[i]+val<0) output[i]=0;
    else output[i]=image[i]+val;
	//아까 입력받은 변화값을 직접 원본의 픽셀값에 덧셈연산을 해줌으로써 상수 합처리의 밝기변화를 해줌
    //이때 픽셀값이 0부터255범위를 벗어나지않도록 클리핑처리를 해주기

//대비 변화
double val;
printf("실수 값 입력: ");
scanf("%lf", &val);
for(int i=0; i<imgSize; i++)
	if(image[i]*val> 255.0) output[i]=255;
    else output[i] = (BYTE)(image[i]*val);
 	//실수값을 입력받아서 입력받은 값을 원래 원본 픽셀값에 상수 곱처리를 해줌으로써 대비 변화를 해줌


//영상 반전
for(int i=0; i<imgSize; i++)
	output[i] = 255 - image[i];
    //아까봤던 negative처리를 해줌으로써 영상 반전을 시켜줌

 

파이썬으로 영상을 명암 영상으로 변환하고 반으로 축소하기

import cv2 as cv
import sys

img=cv.imread('soccer.jpg')

if img is None:
	sys.exit('파일을 찾을 수 없습니다.')
    
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
#RGB 컬러 영상을 명암 영상으로 변환
gray_small=cv.resize(gray,dsize=(0,0),fx=0.5,fy=0.5)
#반으로 축소

cv.imwrite('soccer_gray.jpg',gray)
cv.imwrite('soccer_gray_small.jpg',gray_small)
#영상을 파일에 저장하기 앞에는 저장할 파일명
cv.imshow('Color image',img)
cv.imshow('gray image',gray)
cv.imshow('gray image small',gray_small)

cv.waitKey()
cv.destroyAllwindows()

 

cvtColor 함수가 컬러영상을 명암 영상으로 바꾸는 방법

 

grb에 특정한 값을 곱해
각각 픽셀을 접근해서 명암 영상으로 바꿈

 

선형 연산
비선형 연산

 

파이썬으로 명암조절하기

import cv2 as cv
import numpy as np

img=cv.imread('soccer.jpg')
img=cv.resized(img,dsize=(0,0),fx=0.25,fy=0.25)
#cv.resize()함수는 이미지를 크기 조정하는 함수로 여러 매개변수를 사용합니다
#img:입력 이미지, dsize:출력 이미지의 크기를 지정하는 튜플(width,height)또는 크기를 지정하지않는(0,0)
#fx:가로 방향으로의 크기 비율 fy:세로 방향으로의 크기 비율
#이 코드에서는 (0,0)으로 설정하여 출력 이미지의 크기를 설정하지않고 fx와fy를 각각0.25로 설정하여
#가로와 세로 방향으로 0.25배로 이미지를 축소하고있습니다 이를통해 이미지를 4분의1로 축소하고 결과이미지를 
#img라는 변수에 저장하고있음.

def gamma(f,gamma=1.0):
	f1=f/255.0
    return np.unit8(255*(f1**gamma))
#gamma함수는 두개의 매개변수 f와 gamma를 입력으로 받음
#f: 입력 이미지 또는 배열
#gamma: 감마 값을 나타내는 파라미터로 기본값은 1.0임
#함수 내부에서 우선 입력 이미지 f를 0부터 1까지 범위로 정규화하기위해 f1변수를 생성하여 f를 255.0으로 나누어
#정규화를 시킴 그 후 f1에 gamma값을 제곱하여 감마값을 적용한뒤 다시 255를 곱하여 0부터 255까지의 범위로 변화
#마지막으로 np.unit8()함수를 사용하여 값의 자료형을 8비트 부호없는 정수로 변환하여 반환함

gc=np.hstack((gamma(img,0.5),gamma(img,0.75),gamma(img,1.0),gamma(img,2.0),gamma(img,3.0)))
#이 코드는 img라는 이미지에 대해 감마값에 대한 감마 보정을 수행한뒤 그 결과를 가로로 연결하여
#np.hstack()함수를 사용하여 gc라는 배열에 저장하는것임

cv.waitKey()
cv.destoryAllwindows()

 

'computer_vision' 카테고리의 다른 글

이진화  (0) 2023.04.17
히스토그램(histogram)  (0) 2023.04.16
영상처리  (0) 2023.04.16
colormap  (0) 2023.04.16
computervision  (0) 2023.04.15

영상처리: 특정 목적을 달성하기 위해 원래 영상을 개선된 새로운 영상으로 변환하는 작업

화질 개선 자체가 목적인 경우: 도주 차량의 번호판 식별, 병변 위치 찾기 등

컴퓨터 비전은 전처리로 활용하여 인식 성능을 향상

 

영상을 획득하고나면 디지털로 변환함 

MxN영상으로 샘플링

L단계로 양자화

 

디지털 영상의 좌표계에서는 왼쪽 위 구석이 원점임

 

컬러 모델

컬러모델은 특정상황에서 컬러의 특징을 설명하기 위한 방법

하나의 컬러 모델을 사용하여 컬러의 모든 성질을 설명하기엔 불가능

색좌표계들은 보통 세가지 요소를 사용하여 색을 표현하기때문에  각각의 요소를 하나의 축으로 하는 3차원 좌표 시스템에 대응

RGB컬러 모델
HSV컬러모델

HSV컬러모델은 RGB보다 빛 변환에 강건함.

 

RGB칼라 영상임

위 사진에서 A는 24비트의 칼라영상 B는 R만의 영상 C는 G만의 영상 D는 B만의 영상임

그럼 이 사진을 RGB채널별로 디스플레이하는것을 한번 해볼것임.

import cv2 as cv
import sys

img=cv.imread('soccer.jpg')

if img is None:
	sys.exit('파일을 찾을 수 없습니다.')
   
cv.imshow('original_RGB',img)
cv.imshow('Upper left half',img[0:img.shape[0]//2,0:img.shape[1]//2,:])
#이 코드 부분은 원본 이미지의 높이를 2로 나눈 값과 너비를 2로 나눈 값으로 이미지를 자르는 부분임
#즉 원본이미지의 상단 절반 왼쪽 부분만 표시됨.
#좀 더 자세히 설명을 하자면 img.shape는 img배열의 형태(높이,너비,체널)를 나타내는 속성인데
#여기서 img.shape[0]은 이미지의 높이, img.shape[1]은 이미지의 너비를 나타냄
#:라는것은 모든것을포함한다는 뜻으로 모든 체널을 포함한다는 얘기가됌
cv.imshow('Center half',img[img.shape[0]//4:3*img.shape[0]//4,img.shape[1]//4:3*img.shape[1]//4,:])
#아까 말했던것처럼 img.shape[0]은 이미지의 높이 img.shape[1]은 이미지의 너비를 나타냄 
#img.shape[0]//4는 이미지의 높이를 4로 나눈 값이고 3*img.shape[0]//4는 이미지 높이를 4로 나눈 값에
#3을 곱한값임 그러니가 이미지 높이의 1/4부터 3/4까지의 영역을 선택함 마찬가지로 이미지의 너비도 똑같이
#1/4영역부터 3/4영역을 선택하였고 맨 뒤에 :표시는 모든 체널을 포함한다는 것이니까 이것은 img의 배열중앙
#부분의 절반을 자르는 부분임 이 창에는 원본이미지의 중앙부분의 절반이 표시될것임
cv.imshow('R channel',img[;,;,2])
cv.imshow('G channel',img[;,;,1])
cv.imshow('B channel',img[;,;,0])
# 이 코드들은 아까 설명했던것과 같이 img[높이,너비,체널]인데 모든 높이와 너비를 선택하여서 원본이미지와
#크기는 똑같을 것이며 맨 뒤에 체널부분에서 RGB에 따른 체널선택에 차별성을 두어서 rgb체널별로 
#디스플레이를함
cv.waitKey()
cv.destroyAllwindows()

 

'computer_vision' 카테고리의 다른 글

히스토그램(histogram)  (0) 2023.04.16
픽셀기반 영상처리-산술연산  (0) 2023.04.16
colormap  (0) 2023.04.16
computervision  (0) 2023.04.15
OpenCv  (0) 2023.04.15

+ Recent posts