TIL
[Data Structure] 큐(Queue)란?
큐(Queue) 란? Queue는 차례를 기다리는 사람이나 승용차의 열 이라는 의미도 가지고 있는데, 이런 대기열은 줄을 선 순서대로 앞에서 부터 빠져나가게 된다. 이처럼 큐는 나중에 집어넣은 데이터가 먼저나오는 스택과는 반대되는 개념으로, 가장 먼저 들어온 데이터가 가장 먼저 나가게 되는 구조이다. 따라서 큐는 '선입선출 방식의 자료구조', 또는 'FIFO(First in First Out)의 자료구조 라고 한다. 데이터를 넣는 것은 Enqueue, 반대로 데이터를 꺼내는 것을 Dequeue 라고 하며 새로운 데이터가 들어가는 위치는 가장 뒤인 Back에 들어가게되고, 데이터 나가는 위치는 가장 앞인 Front에서 꺼낸다. 큐 연산 - enqueue : 큐에 데이터를 저장함 - dequeue : 큐의 ..
[Data Structure] 스택(Stack)이란?
스택(Stack) 이란? - 스택은 접근하는 것이 제한되어있는 나열 구조 - 삽입과 삭제가 목록의 끝인 "Top"에서만 가능하다. 쉽게 생각해서 말그대로 stack, 쌓여있는 것으로 예를 들어, 바닥에 동전을 여러개 쌓아올린다고 했을때 다시 동전을 치우려면 가장 나중에 쌓은 동전부터 치울 수 밖에 없다. 이처럼 스택은 한쪽이 막힌 구조라, 나머지 한 쪽에서만 넣고 뺄 수 있어 나중에 들어간 것이 먼저 나올 수 밖에 없는 구조이다. 그래서 스택은 '후입선출 방식의 자료구조', 또는 'LIFO(Last-In, First Out) 구조의 자료구조' 라고도 불린다. 자료를 넣는 것을 푸쉬(push), 반대로 꺼내는 것을 팝(pop)이라고 한다. 스택 연산 - pop() : 스택의 가장 윗 데이터(마지막에 저장된..
[Android]안드로이드 타이틀 바(Title bar) 없애기
Intro 안드로이드에서 타이틀 바를 없애는 방법은 크게 2가지가 있다. 안드로이드에서 기본으로 제공하는 NoTitleBar 테마를 사용하기 => AndroidManifest.xml 수정 커스텀으로 직접 타이틀 바를 없애기 => style.xml 수정 1. AndroidManifest.xml 수정하기 먼저 AndroidManifest.xml 파일을 확인해보면 application 속성의 style:them이 @style/AppTheme으로 되있다. 이건, 프로젝트 내의 style.xml 파일이 있고, 그 파일안의 AppTheme 속성을 이 App의 테마로 설정하겠다는 의미이다. 여기서 첫번째 방법, 안드로이드에서 기본으로 제공하는 NoTitleBar 테마를 사용한다. 위와 같은 방법은 쉽게 간단하게 수정..
[Git Bash] 소스코드 push하기
Github에 저장소 만들기 New repository를 통해 Git Repository 생성해준다. git bash에서 소스 push하기 1. 원하는 소스폴더에서 git bash를 실행 2. 깃을 init 시켜줌. (로컬 저장소 만들기) $ git init 3. 현재 폴더에 있는 파일들 확인 $ git status 4. 로컬저장소에 파일 올려줌. $ git add [파일명 or 폴더명] 특정파일 업로드는 add [파일명 or 폴더명] 모든 파일 push하기 위해서는 파일명대신 . 해줌. 5. push 및 커밋 $ git commit -m "[Push 메세지명]" push시 원하는 메세지를 등록하고 commit 해줌 6. 올릴 깃의 repository주소를 복사 나만의 저장소 주소( https://git..
[Git Bash] git 명령어 정리
버전관리 init 현재 디렉토리에서 내가 작업을 시작하겠다를 알려줌 -> .git 디렉토리 : 버전관리를 하면 생성되는 정보가 저장됨 status 현재상태 봄. (untracked : 추적불가능한상태. 깃한테 버전관리를 시작하라고 하기 전까지는 무시함.) add $ git add . untracked된 파일 관리하라고 git에게 추가함 -> add 명령어를 통해 명확하게 추적하라고 하는 기능이 필요한 이유? 프로젝트를 진행할 때 임시로 필요한 파일은 버전관리하면 안되기때문에, 관리해야하는 파일을 명확하게 git에게 알려주기 위함 config $ git config --global user.name 유저이름 $ git config --global user.email 이메일 처음에 한번만 해주면 되는것. 다..
[OpenCV] 동영상 분할(Video Segmentation)
이미지, 동영상 분할(image/video segmentation)이란? 주어진 디지털 이미지, 비디오를 여러 개의 영역으로 나누는 것으로, chroma-keyin이나 surveillance camera 등 다양한 분야에서 활용되고있다. 1. Background subtraction - image/video segmentation 의 대표적인 방법 비디오가 주어지면, 해당 비디오의 foreground object를 식별하는 것으로, 대부분의 경우 배경이 아닌 물체나 움직이는 객체에 관심이 있다. t 시간의 현재 영상 f(x,y,t)이 있고, 그 시간대에 맞는 배경 영상 B(x,y,t)이 있다고할때, 그 두 영상의 차이를 구해서 그 차이가 특정한 T(threshold)를 넘는다면 배경 영상에 없던 특정한 ..
[OpenCV] 영상 분할(Image Segmentation)
영상분할(image/video segmentation)이란? 어떤 디지털 이미지가 주어져있을때, 그 영상을 여러개의 영역으로 분할하는 것이다. 영상분할은 보통 object classification(물체 분류)에 활용되는데, 우리 눈에는 배경과 어떤 물체 영역이 구별되어 보이지만 실제로 밝기값의 차이가 크거나 미미할 수 있다. 이런 이미지를 0과 255같이 2가지의 값으로 분리시켜 물체의 분류가 용이해지도록 하는 것이다. 입력: gray-scale 이미지 출력: binary image(0과 255 또는 0과 1 같이 2개의 값으로만 이루어진값) 1. Thresholding 영상분할에는 다양한 방법들이 있는데, 그 중 대표적인 방법으로 Thresholding이 있다. 가정 - 분할, 추출하고 싶은 물체와 ..
[OpenCV] 컬러영상처리(Color Processing)
먼저 컬러영상을 처리할 때, RGB 색공간에서 컬러 프로세싱을 하면 영상의 톤이 달라진다던지, 화질 저하 등의 문제가 발생할 수 있기 때문에 HIS나 yCbcR 공간으로 변환 후 I값이나 Y값을 건드려서 컬러 프로세싱을 한다. Usage of HSI - intensity 이미지를 분리시킨다. 이 때는 intensity 값만 변경 가능하다. - Color Slicing(컬러 슬라이싱). Hue(색조)-channel에서 원하는 색상의 픽셀값을 찾고, Saturation(채도)-channel 다른 모든 픽셀의 값을 0으로 설정한다. - Color Conversion(색상변환). Hue-channel에 접근해서 색상 영역를 변경 가능하다. Pseudo Coloring 사람의 눈은 gray 이미지에서, 약 30~..