반응형

Study 152

matplotlib에서 임의의(random) color 자동 생성하기 : hex string 기반

해결하고자 하는 문제 python을 통한 visualization에서 matplotlib에서 랜덤한 color를 생성해야할 때가 있음 임의의 여러 데이터를 color로 표현할 때 color를 일일이 지정하는 것은 비효율적임 랜덤하게 color를 생성하여 입히는 것이 필요함 해결 방법 : 랜덤한 hex string 생성 후 color로 변환 여기서 랜덤하게 color hex string를 만들어 이를 기반으로 color를 생성하면 효율적임 Matplotlib에서 임의의 color hex string을 생성하려면 matplotlib.colors 모듈을 사용할 수 있음 code 예시는 다음과 같음 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import matplotlib.colors as..

Study/Python 2023.04.21

python bool list에서 True 개수 빨리 찾기

python list 객체의 count를 통한 bool list에서의 True 개수 빨리 찾기 파이썬에서 bool list의 True 값 수를 최대한 빨리 계산하려면 list 객체의 count() 메서드를 사용할 수 있음 예제는 다음과 같음 1 2 3 my_list = [True, False, True, True, False, True] count = my_list.count(True) print(count) # output: 4 cs 이 코드는 bool 값을 포함하는 list인 my_list를 생성한 다음 count() 메서드를 사용하여 목록에 있는 True 값의 수를 계산 결과는 count 변수에 저장된 다음 콘솔에 출력됨 이 접근 방식은 매우 효율적이며 O(n) 시간 복잡도(여기서 n은 목록의 길이..

Study/Python 2023.04.12

ROS에서 중요한 개념들

ROS의 기본 용어 및 개념 정리 Node(노드) : 최소 단위의 실행 가능한 프로세스. 하나의 실행이 가능한 프로그램으로 생각할 수 있음. ROS에서의 최소 실행단위가 노드이며 이를 프로그램으로 두고 나누어 작업하도록 함. 각 노드는 메시지 통신으로 데이터를 주고받음. Package(패키지) : 하나 이상의 노드를 포함하며 노드 실행을 수행하기 위한 정보들을 묶어 놓은 것임. 또 이러한 패키지의 묶음을 meta-package(메타-패키지)로 분리하기도 함. message(메시지) : 메시지를 통해 노드 간의 데이터를 주고받을 수 있음. 메시지는 integer, floating, point, boolean과 같은 변수의 형태를 지님. 또 메시지 안에 메시지를 포함하는 데이터 구조 및 메시지의 배열 같은 ..

ROS (robot operating system) : 로봇 운영체제 ROS

ROS란 무엇일까? ROS는 open-source이며, robot을 위한 meta-operating system임 robot SW 개발을 위한 다양한 서비스와 기능을 제공 hardware abstraction low-level device control implementation of commonly-used functionality message-passing between processes package management 또 robot 개발을 위한 다양한 도구들과 라이브러리들을 제공 이를 통해 여러 컴퓨터에서 robot SW source code를 obtaining, biulding, writing, running 할 수 있음 목적 : robot SW 개발을 전 세계에서 공동 작업할 수 있도록 생태..

컴퓨터, 스마트폰 그리고 로봇 : 로봇 소프트웨어 플랫폼

컴퓨터와 스마트폰이 사용자를 만날 때 : 하드웨어와 운영체제 그리고 애플리케이션 두 기기(컴퓨터와 스마트폰)는 많은 사람들이 하나쯤 가지고 있는 대중적인 기기들 이 대중적인 기기들은 여러 하드웨어의 결합으로 만들어져 있으며 다양한 하드웨어 모듈을 변경하고 추가할 수 있음 이 대중적인 기기들은 운영체제와 애플리케이션(앱)의 형태로 사용자가 이용할 수 있음 위와 같은 컴퓨터와 스마트폰은 하드웨어 모듈들과 운영체제 그리고 앱이라는 것을 사용자가 이용한다는 부분에서 공통점을 가짐 그러한 하드웨어 모듈과 운영체제 그리고 앱은 각각의 분야가 분업되어 있다고도 볼 수 있음 즉, 각각의 부분을 담당하는 개발하는 운영하는 사람과 조직이 따로 있음 (하나의 조직에서 모든 것을 다 할 수도 있으나 나뉘어져 있는 경우가 많음..

[computer vision] 핀홀 카메라 모델; 3차원 상의 피사체를 2차원 이미지로 표현하는 모델

핀홀 카메라를 모델링해보자! 핀홀 카메라의 핀홀을 통해 투과된 빛은 직진하여 필름의 평면에 상(이미지; image)이 생김 이를 광선(빛)이 영상 평면(필름)에 상(이미지)이 생긴다고 표현할 수 있음 : 영상 평면(image plane) or 투영 평면(projection plane) 이 이미지의 크기는 핀홀 카메라의 '초점 거리(focal length)'와 '카메라와 피사체 사이의 거리'로 결정됨 일반적인 초점 거리(f)는 영상 평면에서 핀홀까지의 거리임 핀홀 카메라 모델에서의 3차원 피사체와 2차원 이미지의 수식 관계 3차원 상의 피사체가 가지는 크기를 H라고 두고 2차원 상의 이미지가 가지는 크기를 h로 정의 H와 h 사이의 관계는 다음과 같은 수식으로 표현할 수 있음 $$ -\frac{h}{f} ..

Study/Engineering 2023.03.02

[computer vision] 디지털카메라 구조 및 원리

디지털카메라 디지털카메라는 간략화해서 설명하면 아날로그카메라의 필름 부분을 디지털 센서로 바꾼 카메라 빛을 필름에 물리적으로 저장하는 방법 : 아날로그카메라 빛을 센서에 전기적으로 저장하는 방법 : 디지털카메라 디지털카메라의 구조 조리개 : 핀홀카메라 구조의 핀홀에 해당, 빛이 들어오는 양을 조절 반사거울, 펜타프리즘 : 디지털카메라에서 찍을 대상을 눈으로 보여주는 기능 셔터 : 센서에 빛이 들어오는 것을 열고 막는 역할 이미지 센서 : CMOS(Complementary Metal Oxide Semiconductor) 또는 CCD(Charge Coupled Device) 종류의 센서가 있으며, 아날로그카메라의 필름에 해당 디지털카메라의 촬영 원리 찍을 피사체를 확인한 후 셔터를 누름 셔터와 반사거울이 올..

Study/Engineering 2023.02.27

[computer vision] 핀홀 카메라(pin-hole camera)와 필름을 통한 아날로그 사진 촬영 원리

빛이 필름에 새겨지는 것이 아날로그 카메라의 사진 촬영 방법 빛이 필름에 새겨지는 것이 아날로그 카메라의 사진 촬영 방법 이 필름을 인화하는 것이 사진관의 역할 특정 부분만 사진으로 남기기 위한 방법 : 특정 부분의 빛만 필름에 새김 pin-hole이라는 구멍을 통해 특정 부분의 빛만을 필름에 새길 수 있음 이러한 원리를 이용하는 것이 핀홀 카메라임 아날로그 핀홀 카메라가 사진을 만들어내는 원리 요약 필름과 핀홀 카메라 준비 핀홀이 있는 부분에 차단막을 열어 필름에 빛을 새김 다시 차단막을 막아서, 일정 시간 동안만 일정 부분의 빛을 필름에 새기도록 함 (많은 빛이 필름에 새겨져 오염됨을 방지; 카메라 용어로 노출 조절) 빛이 새겨진 필름을 (사진관에서) 인화함 필름 카메라의 문제와 디지털카메라의 등장 ..

Study/Engineering 2023.02.27

Ubuntu 20.04.5 ARM64에서 Visual Studio Code 글자 깨짐 없이 설치하기

Ubuntu 20.04.5에서 VS code 설치하기 Ubuntu 20.04.5 desktop에서 VS code를 설치하여 사용할 수 있음 먼저 VS code 사이트에서 .deb(데비안) 파일을 받음 : https://code.visualstudio.com/Download 이후 '다운로드' 경로에 .deb가 다운되었다면, terminal에서 아래의 명령어를 통해 설치할 수 있음 $ sudo apt install ./다운로드/code_1.75.1-1675892106_arm64.deb 하지만 Ubuntu 20.04.5 ARM64에서 VS code를 설치하고 실행하면 다음과 같이 text가 깨질 수 있음 이를 해결하기 위해 구버전의 Ubuntu ARM64용 VS code .deb를 설치받아서 해결함 Ubunt..

Study/IT & Computer 2023.02.23

Macbook M1에서 Ubuntu 20.04.5 desktop 설치하기 with UTM(virtual machine)

macbook M1에서 가상머신(virtual machine) 사용하기 macbook M1은 ARM64 기반의 아키텍처를 가진 CPU임 따라서 ARM64를 지원하는 가상머신 SW를 사용해야 함 현재 MAC OS에서 ARM64를 지원하는 여러 가상머신 SW가 있으나 문제가 있음 먼저 제한적인 부분이 있거나 ARM64를 지원하지 않음 (virtualbox, VMware) 또는 돈을 주고 가상머신 SW 제품을 구입해야 함 (패러럴즈) UTM이라는 가상머신은 ARM64를 지원하는 동시에 MAC OS(iOS)를 지원하는 오픈소스 가상머신 SW임 Ubuntu 20.04.5 focal fossa 그런데 AMD64가 아닌 ARM64! Ubuntu는 linux 기반 OS 이러한 OS에서는 CPU 아키텍처에 따라 다른 ...

Study/IT & Computer 2023.02.22
반응형