분류 전체보기(86)
-
OpenCV C++ vs python
아래 내용은 이미지/영상 처리 파이프라인을 C++과 Python 각각으로 구현하고, 멀티스레드를 적용해 성능 차이를 비교해보기 위한 예시 가이드입니다. 실제 구현 시에는 상황에 맞춰 코드를 조정하거나, 더 복잡한 기능(예: 객체 검출, 딥러닝 추론 등)을 추가할 수 있습니다. 여기서는 간단한 예시로써 프레임 단위로 블러(blur) 처리를 적용하는 코드를 살펴보고자 합니다.1. 파이프라인 개요영상 소스 준비예: mp4 동영상 파일고화질(예: 1920×1080)로 준비하면 CPU 사용량이 더 커서 성능 차이를 확인하기 쉬움프레임 단위 읽기OpenCV를 사용해 동영상 파일로부터 한 프레임씩 읽어옴이미지 처리(블러 등)단순 예시: cv::GaussianBlur (C++) / cv2.GaussianBlur (Py..
2025.01.15 -
몬테카를로 트리탐색(MCTS)
몬테카를로 트리 탐색(Monte Carlo Tree Search, MCTS) 정리MCTS의 개념MCTS는 의사결정 문제를 해결하기 위한 탐색 알고리즘으로, 랜덤 시뮬레이션과 보상 기반 평가를 통해 상태 공간에서 최적의 행동을 추정합니다.복잡한 상태 공간을 효율적으로 탐색하기 위해 설계되었으며, 턴 기반 게임, 경로 탐색, 강화 학습 등 다양한 분야에서 사용됩니다.MCTS의 동작 과정Selection (선택):루트 노드에서 시작하여, UCT(Upper Confidence Bound for Trees) 공식을 사용해 가장 유망한 자식 노드를 선택.UCT 공식: UCT=WN+ClnTNUCT = \frac{W}{N} + C \sqrt{\frac{\ln T}{N}}UCT=NW+CNlnTWWW: 해당 노드의..
2025.01.14 -
Gazebo에서 velodyne 3d Lidar 써보기
먼저 기존에 만들어 놓은 로봇의 xacro 파일에 링크와 조인트를 만들고 아래와 같은 gazebo 플러그인을 추가해주면 된다. true 10 440 1 -3.14159265 3.14159265 16 ..
2024.12.23 -
ROS2(humble + 22.04) depth camera
전체 흐름뎁스 이미지 수신: ROS 2에서 뎁스 카메라의 depth topic 데이터를 수신.2D 픽셀 → 3D 좌표 변환: 카메라 매트릭스(내부 파라미터)를 사용하여 픽셀 좌표와 뎁스 값을 3D 좌표로 변환.3D 그래프 시각화: 변환된 3D 좌표를 Matplotlib, Open3D 또는 다른 라이브러리로 시각화.카메라 파라미터카메라 매트릭스를 통해 2D 픽셀 좌표를 3D 공간 좌표로 변환합니다. 이때 중요한 파라미터는:fx, fy: 카메라의 초점 거리 (focal length, x/y 방향).cx, cy: 이미지의 중심 좌표.이 값은 카메라의 intrinsic 파라미터에서 가져올 수 있습니다. (RealSense SDK 및 ROS 토픽에서 제공).코드 구현import rclpyfrom rclpy.nod..
2024.12.17 -
YOLOv11 + ROS2(22.04 + humble)
import rclpyfrom rclpy.node import Nodefrom sensor_msgs.msg import Imagefrom cv_bridge import CvBridgeimport cv2from ultralytics import YOLOclass YoloImageSubscriber(Node): def __init__(self): super().__init__('yolo_image_subscriber') # 이미지 토픽 구독 (예: /camera/image_raw) self.subscription = self.create_subscription( Image, '/intel_realsense_r200_depth/..
2024.12.17 -
멀티 스레드 관련 궁금증 (Python vs C++)
나의 첫 궁금증은 예전에 들었던 "멀티 스레드를 제대로 쓰려면 파이썬이아니라 c++로 해야한다는 말이었다.거기에 대해 궁금해져서 검색해보았다. 파이썬과 C++에서 멀티스레드의 차이는 주로 파이썬의 **GIL(Global Interpreter Lock)**이라는 특성과 관련이 있습니다. 이 차이가 멀티스레드의 효율성과 활용도에 큰 영향을 미칩니다.GIL(Global Interpreter Lock)란?파이썬 인터프리터는 하나의 스레드만 실행하도록 하는 락(lock) 메커니즘입니다.멀티스레드를 사용하더라도 동시에 실행되는 작업은 하나의 스레드로 제한됩니다.따라서, 파이썬 멀티스레드는 CPU 집약적인 작업(예: 복잡한 수학 연산)에서는 성능이 제한됩니다.결과:파이썬에서 멀티스레드는 I/O 작업(예: 파일 읽기..
2024.12.12