본문 바로가기
반응형

Programming27

[Image Processing][Python]이미지 히스토그램(Histogram) 오늘은 이미지의 히스토그램을 한 번 알아보고자 합니다. 이번 포스팅도 사전 설명이 좀 있을 예정입니다만 최대한 간략하게 하도록 노력해보겠습니다. 히스토그램(Histogram)이란 데이터의 특징을 한눈에 알아볼 수 있도록 데이터를 막대그래프 모양으로 나타낸 것입니다. 디지털 영상처리의 관점에서는 히스토그램을 통해 영상의 특징을 파악할 수 있다는 장점이 있는데요. 1 채널 이미지를 예로 들어보자면 0에서 255까지의 intensity 범위가 있고 해당 값을 갖는 픽셀의 개수를 세어 그래프로 만들어보면 명도에 따른 픽셀의 개수가 나오는 것이기에 이미지가 밝기 등을 알 수 있겠죠. 이전 포스팅에서도 알아봤듯이 intensity를 수학적 연산을 통해서 값을 변환시키면 그게 이미지에도 적용된다는 것을 봤었죠. 특정.. 2021. 12. 8.
[Image Processing][Python]이미지 이진화(Binarization) 이전 포스팅에서 말했던 대로 오늘은 numpy 모듈도 사용해서 구현해보았습니다. 사용한 샘플 사진은 저번 포스팅과 같습니다. 결과 : 코드 : import cv2 import numpy as np def cvt_to_binary(img,binary_threshold): img1 = np.where(img > binary_threshold,255,img) img2 = np.where(img1 < binary_threshold,0,img1) return img2 img_name = input('Input Image Name : ') binary_threshold = int(input('Input Binary Threshold : ')) img = cv2.imread(f'./img_sample/{img_nam.. 2021. 12. 7.
[Image Processing][Python]이미지 그레이스케일 변환 문득 최대한 opencv를 안 쓰고 이미지 프로세싱을 진행해보면 어떨까 하는 생각이 들었습니다. 기초부터 이미지 프로세싱을 진행한다는 느낌도 들고 최소한 내가 사용하는 기술이 어떤 식으로 이뤄져 있는지는 알고 쓰는 게 나중에도 도움이 될 것이라 생각이 들어서 간단한 것부터 진행해보려 합니다. 이 글은 현재 opencv의 inshow, imread, imwrite 등의 이미지를 불러오고 보여주는 기술은 아직 구현하지 못했기에 전혀 opencv의 기능을 사용하지 않는 것이 아니라는 점을 미리 고지합니다. 흑백 이미지로 변환할 이미지를 아무거나 골라주세요. 저는 이 사진으로 해보겠습니다. 먼저 이미지에 대한 간단한 내용을 짚고 넘어가야 하는데요. 우리가 눈으로 볼 때는 이미지에 들어있는 무언가의 형태나 색을 .. 2021. 12. 6.
[Capstone Design]3. 차선 인식(Lane Detection) - 1 이제 본격적으로 차선 인식을 진행해봅시다. 이 사진을 우리가 운전석에 앉아서 보는 전방 모습이라고 해볼까요. 여기서 우리가 사고를 내지 않기 위해서 생각해야 하는 것들은 뭘까요? 앞 차량과의 거리, 현재 내 차량의 속도, 내 차량의 차선이탈 여부 등등이 있겠지만 일단 이 포스팅은 차선 인식이니까 차선만 한 번 신경 써봅시다. 저렇게 파란색으로 칠해놓은 부분이 우리가 하려고 하는 차선인식의 핵심이 되겠죠? 저게 바로 현재 우리 차량이 위치하는 차선이니까요(사진은 임의로 차량의 블랙박스 영상이라고 하겠습니다). 그럼 이제 어떻게 하면 되는지에 대해 알아봅시다. Grayscale(그레이스케일) 먼저 차선 인식을 사용하고자 하는 이미지를 그레이스케일, 즉 흑백 이미지로 바꿔야 합니다. 그 이유는 뭘까요? 차선은.. 2021. 11. 2.
[Capstone Design]3. 차선인식(Lane Detection) - 0 이번 포스팅에서는 차선인식을 진행하기에 앞서서 이것저것 먼저 짚고 넘어가고자 합니다. 자율주행 여러분은 '자율주행'이란 말을 들으면 무엇이 떠오르시나요? 저는 상당히 막연하게 '사람이 아무것도 안해줘도 알아서 달리는 기능'이라고 생각했습니다. 하지만 이런 자율주행에도 기능별로 레벨이 구분되어 있다는 사실 알고 계신가요? 국제자동차기술자협회(SAE)에서 발표한 내용을 표로 정리해 보았습니다. Level 0 수동 운전(비자율화) 운전자가 기능 제어 및 조작 책임 Level 1 운전자 지원 차선 이탈 경보, 크루즈 컨트롤 등 시스템이 운전 보조 Level 2 부분 자동화 차선 유지, 어댑티브 크루즈 컨트롤 등 2개 이상의 자동제어 기능이 함께 작동하며 시스템이 운전 Level 3 조건부 자율주행 시스템이 교통.. 2021. 10. 29.
[Capstone Design]2. OpenCV-Python, Numpy 영상처리를 해보셨거나 알고 계시는 분들은 아마 'OpenCV'라는 말을 들어보셨을 겁니다. 이외에도 영상처리를 하는데 사용 가능한 라이브러리들이 많이 있다고 알고 있지만 저는 이번 프로젝트를 진행하면서 OpenCV를 사용했기 때문에 일단은 OpenCV에 대한 얘기를 해보도록 하겠습니다. OpenCV란? 위키백과에 따르면 OpenCV란 Open Source Computer Vision Library로 '실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리'입니다. 원래는 인텔의 주도 하에 C언어로 개발이 되었지만 현재는 C++, Python, Matlab 등 여러 언어를 지원하기 때문에 접근이 상당히 쉬운 편입니다. 이제 OpenCV를 사용하기 위해서는 설치를 해주어야 합니다. Python에서 이전에 라.. 2021. 10. 18.
[Capstone Design]1. 프로젝트 소개글 저는 졸업작품으로 '자동 도로 표식 도색기'를 구현하는 프로젝트를 진행해왔고 진행 중입니다. 저와 같은 주제는 아니더라도 혹여 제가 프로젝트를 진행하며 겪었던 어려움이나 느꼈던 점들을 공유하고 또 여러분들께 도움이 되면 좋겠다는 생각이 들어 기록을 남기려고 합니다. 이름만 들었을 때는 뭔가 거창한 프로젝트처럼 보이실수도 있으나 저 혼자 진행한 내용이 아니기에 아마 포스팅은 제가 맡아서 했던 부분에 치중해서 글을 올리게 될 것 같습니다. 저는 이 프로젝트에서 '차선인식을 통한 자동조향'을 담당했습니다. 간단하게 설명을 드리자면, 실제로 이 기계를 만든다고 가정할 때, 현재 저희가 설계한 대로면 상당히 큰 기계가 될 것이고(거의 차선의 가로폭과 맞먹는 정도의 크기) 그런 기계를 들고 다니는 것에는 현실적으로.. 2021. 10. 16.
반응형