분류 전체보기
-
BNF (Backus-Naur Form)를 이용한 산술 표현에 대한 문법컴공지식/프로그래밍언어론 2024. 9. 7. 02:04
BNF (Backus-Naur Form)는 프로그래밍 언어에서 문법을 정의할 때 자주 사용하는 형식이다. BNF 문법의 기본 구조는 다음과 같다. expr ::= { "+" expr expr } | { "-" expr expr } | num num ::= "1" | "42" | "17" | ... expr은 non-terminal(비종결 기호)이라고 부른다. 무슨 뜻이냐면, 이게 다른 문법 규칙에 의해 더 구체적인 표현으로 재작성될 수 있다는 뜻이다. ::=은 "뭐뭐로 쓸 수 있다"는 뜻이다. 즉, expr는 뒤에 나오는 여러 가지로 변환될 수 있다는 거다. |는 "또 다른 선택지"를 의미한다. 즉, expr는 +로 시작하는 표현일 수도 있고, -로 시작하는 표현일 수도 있으며, 또는 그냥 숫자일 수도 ..
-
Semantics (의미론)에 대하여컴공지식/프로그래밍언어론 2024. 9. 7. 01:24
프로그래밍 언어에서 'Semantics'는 코드가 어떻게 의미를 갖는지, 즉 코드가 실제로 무엇을 하고 어떻게 동작하는지를 정의하는 거다.몇 가지 의미론을 살펴보자 Mathematical techniques (수학적 기법들) 일단 수학적 방법으로 프로그래밍 언어의 의미를 정의할 수 있는데, 그 대표적인 방법들은 다음과 같다.Denotational semantics (표상 의미론): 이건 프로그램의 각 부분을 수학적인 함수로 표현하는 방식이다. 즉, 코드가 어떤 입력을 받아서 어떤 출력을 내는지, 그 관계를 수학적으로 정의한다.Operational semantics (작동 의미론): 이건 프로그램이 실제로 어떻게 실행되는지를 설명하는 방식이다. 한 단계 한 단계의 실행 과정을 정의하는 거라고 보면 된다...
-
문법(Syntax)에 대하여컴공지식/프로그래밍언어론 2024. 9. 7. 01:16
문법에는 두 가지 타입이 있는데 구체적인(concrete) 문법과 추상적인(abstract) 문법이 있다. Concrete Syntax(구체적인 문법)은 코드가 실제로 어떻게 쓰이는지에 대한 거다.예를 들어 숫자 '3'과 '4'를 더할 때 여러 가지 표기법이 있다. Infix (중위 표기법) : 3 + 4 로 우리가 가장 익숙한 표기법이다. Postfix (후위 표기법) : 3 4 + 로 피연산자가 먼저 나오고 연산자가 나중에 나온다. 계산기 같은 데에서 쓰인다. Prefix (전위 표기법) : + 3 4 로 연산자가 먼저 나오고 피연산자가 그 뒤에 온다. Parenthesized prefix (괄호로 묶인 전위 표기법) : {+ 3 4} 로 전위 표기법에 괄호를 추가한 형태다. 내가 듣는 수업에서는..
-
프로그래밍 언어의 구성컴공지식/프로그래밍언어론 2024. 9. 7. 01:10
프로그래밍 언어는 다음과 같은 것들로 이루어져 있다. 특유의 문법(syntax) : 이건 그 언어가 어떻게 코드를 작성해야 하는지를 말한다. 문장 구조에 대한 규칙 그 문법에 따른 동작 : 언어마다 각 문법 요소가 어떻게 동작하는지 정해져 있다. 예를 들어, 조건문이 어떻게 실행되거나 함수가 어떻게 호출되는지 같은 거다. 유용한 라이브러리들 : 프로그래밍할 때 코드 재사용성을 높이기 위해 라이브러리들이 있다. 프로그래머들이 자주 쓰는 관용구(idioms) : 이건 그 언어를 쓰는 사람들이 자주 사용하는 특정한 코드 패턴을 말한다.
-
미디언 필터(Median Filter)란?컴공지식/컴퓨터비전 2024. 9. 6. 23:07
이 필터는 이미지 처리에서 주로 잡음 제거를 위해 사용된다. 미디언 값은 정렬된 데이터 세트에서 중앙에 위치한 값이다.3x3 이웃에서는 9개의 값 중 5번째로 큰 값이 미디언 값이다.5x5 이웃에서는 25개의 값 중 13번째로 큰 값이 미디언 값이다. 미디언 필터는 마스크 내의 픽셀 값을 정렬하여 미디언 값을 찾고, 마스크의 중앙 픽셀 값을 이 미디언 값으로 대체하는 방식이다.임펄스 노이즈(Salt-and-Pepper Noise) 같은 랜덤한 밝은 점이나 어두운 점이 있는 경우에도 효과적으로 노이즈를 제거한다.그러니까 이 필터의 중요한 점은 아주 작거나 아주 큰 값(노이즈)을 무시하고, 중간 값만을 선택함으로써 잡음이 제거되고 이미지가 부드러워진다는 것이다.
-
Unsharp Masking 기법컴공지식/컴퓨터비전 2024. 9. 6. 23:02
Unsharp Masking 과정을 통해서 이미지를 샤프하게 만드는 방법을 소개하겠다 이를 위해선 일단 Original Signal과 Blurred Signal을 알 필요가 있다.이 그래프는 원래의 이미지 신호 ( Original Signal ) 를 나타낸다. 이 신호가 우리가 가진 원본 이미지다.원본 신호에 블러(흐림) 처리를 해서 부드럽게 만든 신호( Blurred Signal )다.블러는 주로 Gaussian 블러 같은 필터를 사용해서 구현한다.흐리게 만드는 이유는, 나중에 이 흐림 신호를 원본에서 빼서 엣지 부분만 추출할 수 있기 때문이다. 언샤프 마스크는 원본 신호에서 블러 처리된 신호를 뺀 값이다.이 차이를 계산하면 이미지의 엣지(경계) 부분이 강조된다. 마치 엣지 디텍션처럼 이미지의 경계선..
-
샤프닝(Sharpening)이란?컴공지식/컴퓨터비전 2024. 9. 6. 22:49
샤프닝은 이미지를 더 선명하게 만들어서 디테일을 강조하는 기술이다.샤프닝의 주된 목적은 명암 전환(즉, 밝기 변화)이 있는 부분을 강조하는 거다.쉽게 말해, 이미지에서 경계가 뚜렷한 부분(예: 물체의 윤곽선)을 더 강조해서 날카롭게 보이게 만드는 거다. 왼쪽의 원본 이미지에서는 달의 표면 디테일이 상대적으로 부드럽게 보이지만, 오른쪽의 샤프닝된 이미지는 표면의 윤곽과 경계가 더 뚜렷하게 강조되었다. 샤프닝은 주로 공간 미분(Spatial Differentiation) 을 사용한다.공간 미분이란 이미지에서 픽셀 간의 차이를 계산하는 방식인데, 이걸 통해 경계 부분을 더욱 두드러지게 만든다.
-
마스크 크기의 중요성컴공지식/컴퓨터비전 2024. 9. 6. 22:41
필터링할 때 사용하는 마스크(커널)의 크기가 필터링 결과와 계산 비용에 큰 영향을 미친다.작은 마스크는 작은 영역의 픽셀들에만 영향을 미치고, 큰 마스크는 더 넓은 영역에 영향을 미친다.따라서 필터링할 대상이 작은지 큰지에 따라 적절한 크기의 마스크를 선택해야 한다. 작은 물체나 세부적인 부분을 블러링할 때는 작은 마스크를 사용하는 게 좋다.큰 마스크는 더 넓은 영역을 필터링하기 때문에, 계산에 드는 비용이 많이 든다.이미지의 각 픽셀에 대해 큰 마스크를 적용해야 하므로, 전체적인 계산량이 크게 증가해 처리 시간이 길어질 수 있다.