Raw Data Image File, Qt Creator를 이용하여 읽기

블로그에 쓰는 첫 번째 글이다.

오늘은 Qt Creator를 이용하여 Raw Data Image를 어떻게 읽어오는지 알아보자.


Raw Data란?

이미지 파일 포맷 중 하나로 디지털 카메라나 이미지 스케너의 이미지 센서로부터 최소한으로 처리한 데이터를 포함하고 있다.

Raw Data 이미지 파일의 장점

  • 무손실 압축을 사용하므로 이미지는 원본 그대로를 사용하고 있다.
  • 더 섬세한 제어가 가능하다.
  • 색 공간은 사용자가 원하는대로 변경할 수 있다.

Raw Data 이미지 파일의 단점

  • 일반적으로 JPEG 파일보다 2~6배 정보 용량이 더 크다.
  • 카메라가 raw 이미지를 카드에 기록할 때 JPEG보다 시간이 많이 걸리므로 연속 촬영에서 건져낼 수 있는 사진 수는 비교적 적다.
  • Width, height 정보를 알아야 한다.

Raw Data 이미지 파일을 읽기 위한 단계

다음과 같은 단계를 거쳐야 한다.

Qt Creator를 이용해서 Raw Data Image File을 읽어보자.

(소스는 .cpp 파일의 일부이다. 변수 선언은 대부분 .h 에 했다.)

1 . Width와 Height을 입력해준다.

여기서는 Dialog창을 이용하여 Width와 Height을 입력받았다.

int width, height; //declare variables on header file
width = ui->lineEdit->text().toInt();
height = ui->lineEdit_2->text().toInt();

2 . QFileDialog를 이용해 raw파일을 선택한다.

QString strFileName; //declare variables on header file
QString strFilter = "raw file(*.raw)";
strFileName = QFileDialog::getOpenFileName(this,"Open a file","C:/Users/TaeYoung/Desktop/영상처리시스템설계_과제1",strFilter);
//choose the file name
//C:/Users/TaeYoung/Desktop/영상처리시스템설계_과제1 - 파일 경로 입력

3 . QFile을 이용하여 file을 읽어온다.

QFile file; //declare variables on header file
file->setFileName(strFileName);  //load the file
file->open(QFile::ReadOnly);  //just read the file

4 . QByteArray를 이용해서 file data 형식을 바꾼다.

QByteArray byteArray; //declare variables on header file
byteArray = file->readAll(); // transfer file to byteArray

5 . Unsigned Char 형식으로 data 형식을 바꾼다.

uchar data; //declare variables on header file
data = (const uchar*) byteArray.constData(); //transfer byteArray to uchar

6 . QImage를 이용하여 Image형식을 초기화한다.

QImage image; //declare variables on header file
QImage *temp = new QImage(data,width,height,QImage::Format_Grayscale8);
image = *temp;  //initialize image

7 . QPixmap을 이용하여 이미지를 변환하자.

QPixmap pix; //declare variables on header file
pix = QPixmap::fromImage(image,Qt::AutoColor); 
//initialize raw image to qpixmap

8 . QPixmap을 이용하여 QLabel에 이미지를 띄우자.

ui->label_image->setPixmap(pix);               
//show image on qlabel

QImage에 대한 설명은 Qt Documentation를 참고하자.


Raw Data Image File 읽기 결과

위에 알려준 순서대로 Raw data image file을 읽을 경우, 다음과 같은 프로젝트를 만들 수 있다.

first

  • MainWindow 화면 여기서 ‘Open raw Image’ 버튼을 누른다.

second

  • Dialog 창에서 이미지 포멧을 정하고, Width와 Height를 입력한다.

third

  • Image가 첨부된 모습

전체 코드는 Image Viewer Qt를 참고하자.

2024

2023년 회고

January 07 2024

2023년을 되돌아보며 글을 적어보자.

맨 위로 이동 ↑

2023

2022년 회고

January 14 2023

2022년을 되돌아보며 글을 적어보자.

맨 위로 이동 ↑

2022

2021년 회고

January 03 2022

2021년을 되돌아보며 글을 적어보자.

맨 위로 이동 ↑

2021

BTS paper review

January 24 2021

Depth estimation 논문인 BTS(From Big to Small)를 읽고 정리해보자!

맨 위로 이동 ↑

2020

CS231n 13강 요약

September 06 2020

Unsupervised Learning과 Generative Models에 대해서 알아보자!

CS231n 12강 요약

September 03 2020

CNN Layer들의 Data를 시각화 하는 방법에 대해 알아보자!

CS231n 9강 요약

August 27 2020

대표적인 CNN Architecture에는 어떤 것들이 있는지 알아보자!

CS231n 7강 요약

August 04 2020

Neural Network를 Training 시킬 때, 고려해야 하는 것들을 추가적으로 알아보자!

CS231n 6강 요약

July 25 2020

Neural Network를 Training 시킬 때, 고려해야 하는 것들을 알아보자!

CS231n 4강 요약

July 16 2020

오늘은 Backpropagation과 Neural Networks에 대해 배워보자!

CS231n 3강 요약

July 13 2020

오늘은 loss functions와 optimization에 대해 배워보자!!

CS231n 2강 요약

July 13 2020

드디어 본격적으로 강의를 배우는 첫번째 시간이다.

맨 위로 이동 ↑