컴공지식
-
XML DOM컴공지식/웹 2024. 10. 8. 14:25
XML 요소들을 가져오고, 수정하고, 추가하고, 삭제하는 방법을 표준화한 것이다.다만, XML은 데이터를 저장하고 전송하는 목적으로 쓰이기 때문에엄격한 구조를 가지고 있다.태그를 꼭 열고 닫아야 하고, 대소문자 구분도 명확해야 한다. XML DOM은 이런 정확한 구조를 기반으로 해서, XML 문서를 트리처럼 만들어주고, 그 안의 요소나 속성을 다루는 방법이다.이런 모양이다.HTML이랑 참 많이 다르다.HTML은 대소문자도 신경 안 쓰고, 일부 태그는 열고 닫는 것도 무시해도 된다. HTML DOM은 HTML 문서를 트리 구조로 만들어서, 각 요소를 자바스크립트로 쉽게 조작할 수 있게 해준다. 즉 차이점은 XML은 더 엄격하고 구조화된 데이터를 처리하는 데 쓰이고, HTML은 웹 페이지 요소들을 조작하는..
-
침식과 팽창 수행 문제컴공지식/컴퓨터비전 2024. 10. 6. 18:16
침식은 구조화 요소가 1인 부분이 모두 일치해야 물체를 유지하고, 그렇지 않으면 그 픽셀을 0으로 바꾸는 연산이다.쉽게 말해서 구조화 요소의 모든 1이 입력 이미지의 물체(1)와 정확히 겹쳐야지만 1을 유지할 수 있다.구조화 요소의 중심(가운데 값)을 기준으로 입력 이미지를 하나씩 슬라이딩하면서 비교한다. 구조화 요소와 모든 1이 일치하는 영역이 있으면 그 중심 픽셀은 1로 유지되고, 그렇지 않으면 0이 되는 거다딱 보면 가운데만 딱 일치하니 그 픽셀만 1이 되고 나머지는 0이 된다. 팽창은 구조화 요소에서 1이 하나라도 겹치면 그 중심 픽셀을 1로 바꾸는 연산이다.즉, 구조화 요소가 물체의 일부라도 겹치면 그 중심 픽셀은 1로 변한다. 팽창은 물체를 부풀려서 커지게 만든다.굉장히 많은 1이 형성될 것이..
-
모폴로지 연산 코드컴공지식/컴퓨터비전 2024. 10. 6. 17:57
침식(Erosion)과 팽창(Dilation) 코드침식은 물체를 깎아내고, 팽창은 물체를 부풀리는 역할을 한다.Mat image, erosion, dilation; // 이미지, 침식 결과, 팽창 결과를 저장할 변수 Mat element = getStructuringElement(MORPH_ELLIPSE, Size(10, 10)); // 커널(구조화 요소)을 타원 모양으로 생성. 크기는 10x10 image = imread("water_coins.jpg", 0); // 이미지를 흑백으로 불러옴 threshold(image, image, 128, 255, THRESH_BINARY); // 임계값을 사용해 이미지를 이진화 (128 이상은 흰색, 나머지는 검은색) erode(image, erosion, e..
-
배경 제거 코드컴공지식/컴퓨터비전 2024. 10. 6. 17:30
평균 배경 이미지 생성 코드를 알아보자배경이 명확해야 그 배경과 비교해서 물체의 움직임을 더 잘 감지할 수 있으니 안정적이고 깨끗한 배경을 만들어야 한다.그래서 다음과 같이 코드를 쓴다.일종의 준비 작업이라고 생각하면 될 것 같다. int main() { VideoCapture capture("background.mp4"); // 비디오 파일 열기 Mat image, sum, avg; // 이미지, 합계, 평균을 저장할 변수 int cnt = 2; // 프레임 수를 세기 위한 변수 capture >> avg; // 첫 번째 프레임을 평균 변수에 저장 while (true) { if (!capture.read(image)) break; // 더 이상 읽을 ..
-
모폴로지 연산(Morphological Operation)컴공지식/컴퓨터비전 2024. 10. 6. 16:55
모폴로지 연산은 이미지 처리에서 모양(형태)를 조작하는 기법이다. 간단히 말하면 이미지에서 물체의 모양을 깎아내거나, 부풀리는 작업을 하는 거다.주로 이진 이미지에서 사용된다. 크게 네 가지 주요 연산이 있다: 침식(Erosion), 팽창(Dilation), 열림(Opening), 닫힘(Closing) 침식(Erosion)은 A라는 이미지에 B라는 커널(모양)을 사용해서 물체를 깎아내는 작업이다.빵을 먹을 때, 겉부분(크러스트)을 조금씩 떼어내는 걸 상상해봐라.이게 바로 물체가 작아지면서 점점 '깎여' 나가는 침식이다.침식을 통해 작고 얇은 물체로 만들어진다. 팽창(Dilation)은 A라는 이미지에 B라는 커널을 사용해서 물체를 부풀리는 작업이다.빵을 발효시킬 때, 빵이 부풀어 오르는 모습을 떠올려..
-
배경 차감(Background Subtraction)컴공지식/컴퓨터비전 2024. 10. 6. 16:47
배경 차감은 영상 처리에서 움직이는 물체를 검출할 때 자주 사용하는 방법이다.기본적으로 시간에 따라 변하지 않는 배경을 제거하고, 변하는 부분만 추출해서 물체의 움직임을 감지한다. 두 개의 이미지 프레임이 있다: f(x, y, t)는 현재 프레임이고, B(x, y, t)는 배경 프레임이다.각 픽셀에서 이 두 프레임의 차이를 구해 물체 움직임을 감지하는 방식이다.수식으로는 다음과 같이 표기된다.여기서 T는 차이를 감지하는 임계값이고, 차이가 크면 1 또는 255로 표시된다. 이 값이 1인 부분을 움직임이 있는 곳이라고 본다. 성공적인 배경 차감의 핵심은 조명의 급격한 변화: 빛이 갑자기 변하면 배경도 변하는 것처럼 보일 수 있으니까 이를 잘 처리해야 한다.반복적인 움직임: 예를 들어, 나뭇잎이 흔들리거나..
-
FWAE의 평가(Evaluation) 과정 이해하기: 일급 함수와 오류 처리컴공지식/프로그래밍언어론 2024. 10. 5. 17:08
FWAE는 기본적인 수학 연산뿐만 아니라, 일급 함수를 지원하는 언어이다.일급 함수는 함수가 값으로 취급된다는 것을 말한다. 숫자나 함수는 평가 결과가 될 수 있으며, 함수 정의와 호출, 변수 바인딩을 통해 복잡한 계산을 수행할 수 있다.또한, 정의되지 않은 식별자나 잘못된 연산을 시도할 때 오류가 발생한다. FWAE에서 숫자나 기본적인 연산식은 쉽게 평가될 수 있다.숫자 10은 그 자체로 평가되며, 결과는 그대로 10이다.덧셈과 뺄셈 같은 기본 연산도 쉽게 평가된다. {+ 1 2}는 1과 2를 더한 값 3이 된다. with 구문을 사용하면 변수를 선언하고 그 값을 특정 연산에 사용할 수 있다.{with {x 7} {+ x 2}} => {+ 7 2} => 9 위 코드에서 x에 7을 바인딩하고, 그..
-
Substitution의 연기컴공지식/프로그래밍언어론 2024. 10. 5. 16:30
with {x 1} { with {y 2} { + 100 {+ 99 {+ 98 ... {+ y x}...} 만약에 이런 연산을 하려고 하면이 계산을 위해 모든 표현을 순차적으로 찾아가며 x, y값을 대입하게 된다.중간에 x나 y가 더 자주 등장하면 그때마다 각각의 값을 대입해야 한다.이 방법은 식이 복잡하고 변수의 등장 횟수가 많아질수록 반복적으로 대입 작업을 해야 하기 때문에 매우 비효율적이다.이는 보통 O(nm)의 시간 복잡도를 가진다.n은 변수의 개수m은 식의 개수다. 다만, 대입을 연기하는 경우(Deferring Substitution)을 이용하면 이 시간을 단축할 수 있다.처음에는 x에 1을 넣는다는 걸 기억하고 값을 바로 대입하지 않고 대입 리스트에 추가한다.예를 들어, 대입 리스트는 [(x,..