언어/C 25

C언어 영상처리 과제 - compression, Quantization

C언어 문자열 다루는게 기억이 안나서 막 짰는데 그것 때문에 코드가 많이 지저분해 진 것 같은데,,,#define _CRT_SECURE_NO_WARNINGS#include#include#include#include #includevoid DPCMEncoder(double*, int*, int, BITMAPFILEHEADER, BITMAPINFOHEADER);void write_matrix_to_file(const char* filename, int* matrix, int height, int width);void makeOutFile(BITMAPFILEHEADER bmpFile, BITMAPINFOHEADER bmpInfo, char* fileName, double* y);int main() { BITM..

언어/C 2024.06.05

C언어 영상처리 - DPCM

뭉쳐있는 영역은 비슷한 픽셀을 가진다! -> 차이만 전달해서 용량을 줄여보자!제일 왼쪽 값에서 차이를 구하고, 그걸 5구간으로 나눠서 용량을 줄인다!코드에서 q가 0 ~ q-1까지를 하나로 본다는 뜻 입니다.더보기중간 값(128)이 있다는 가정 하에 차이(-28)를 전송 정보 손실 없는 압축 == 무손실 압축 여기는 무손실 압축 ( q가 없다) 비슷한 값이므로 확률적으로 예측한다. 데이터를 깎는다 ==Quantization = 양자화데이터를 깎아서 적은 양의 데이터를 주고 받게 한다.이 작업이 있으면 손실 압축 (q) 양자화가 커지면 데이터 손실도 늘어난다.Prediction Error까지는 무손실 압축Quantization은 손실 압축 - 정수 단위로 바뀐다. 손실이 일어난다. 왜 두번째는 0이 아닌가..

언어/C 2024.05.23

C언어 영상처리 - 노이즈 제거, 업스케일링 기록용

양방향 + bi양 + bi + 양양+bi+양+hy양+bc+양+hy양+tn+양+hy양+hy+tn+양+hyb25.2225.2925.2925.2825.2823.38d19.2619.3819.4019.3619.4419.29s14.9415.2015.2715.1515.3614.98g20.2220.3120.3320.3020.4319.80양+tn+양+hy가 제일 우수하다!bc가 안나온건 예상 외지만 그래도 하나라도 건졌으니.....삭제할 코드 저장용void upsampling(int ratio, double* org, double* ups, BITMAPFILEHEADER bmpFile, BITMAPINFOHEADER bmpInfo, double* upy) { int width = bmpInfo.biWidth, heigh..

언어/C 2024.05.16

C 언어 영상처리 - Sobel Filter, 윤곽선 검출, Edge Detection

2024.05.02 - [언어/C] - C언어 영상처리 Edge 구하기, threshold 구하기[C언어 영상처리 Edge 구하기, threshold 구하기edge는 명암, 휘도 등이 급격하게 변하는 곳 입니다.만약 물체가 동일한 색 이라면 경계의 색 차이가 크게 나지 않겠지요 ..그래도 색 차이가 큰 곳에서는 대부분 경계가 잘 드러납니다.x,y에 대한yoonschallenge.tistory.com](https://yoonschallenge.tistory.com/480)이전에 진행했던 내용이랑 비슷합니다.x필터만 적용했을 때y필터만 적용했을 때x+ythreshold를 넘긴 부분만 표현했을 때void sobelEdgeMap(double* y, int width, int height, BITMAPFILEHE..

언어/C 2024.05.07

C언어 영상처리 Edge 구하기, threshold 구하기

edge는 명암, 휘도 등이 급격하게 변하는 곳 입니다.만약 물체가 동일한 색 이라면 경계의 색 차이가 크게 나지 않겠지요 ..그래도 색 차이가 큰 곳에서는 대부분 경계가 잘 드러납니다.x,y에 대한 기울기를 통해 구할 수 있습니다.우리는 영상을 사용하므로 딱딱 끊어져 있으므로 center를 통해 구할 수 있습니다.임계값보다 크면 edge로 판단할 수 있는데 이 임계값이 문제네요threshold값을 보면 엄청 작은 것을 알 수 있다.threshold값을 넘는 것을 edge로 보고 확실하게 표시하도록 하겠다.오............ㅠ......엣지를 잘 따는 것 같기는 한데....노이즈가 슬슬 끼네요....어우 무섭네...원본 edge가 이정도인걸 보면 그래도 많이 살렸네요흠....이건 그래도 저장 했으니..

언어/C 2024.05.02

C언어 영상처리 - Rotation

이건 좌측 하단이 회전축 void Rotation(double* y, int width, int height, double theta, BITMAPFILEHEADER bmpFile, BITMAPINFOHEADER bmpInfo) { theta = theta / 180 * PI; double* gy; gy = (double*)calloc(width * height, sizeof(double)); for (int j = 0; j =0 && x2 = 0 && y2  이건 영상 중앙을 중심 좌표로 잡아 돌린다.void Rotation(double* y, int width, int height, double theta, BITMAPFILEHEADER bmpFile, BITMAPINFOHEADER bmpInfo) ..

언어/C 2024.04.30

C언어 영상 처리 - Gamma

사람 눈은 카메라처럼 1픽셀 단위로 따박따박 인식 X오차가 있다.어두운 부분을 좀 더 세밀하게 나눌 수 있다고 볼 수 있다. -> 어둠에 민감!감마 인코딩을 거치면 훨씬 잘 나뉘어 보인다.8비트이므로 우린 MAX = 255이다.전파의 수, 송신 오류로 감마가 변하거나 센서의 부족함으로 감마가 입혀졌어도 다시 되돌릴 수 있다.함수형으로 전부 바꾸는중이라 점점 단순해지는중..void GammaOut(double* y, double g, BITMAPFILEHEADER bmpFile, BITMAPINFOHEADER bmpInfo) { int width = bmpInfo.biWidth, height = bmpInfo.biHeight, size = bmpInfo.biSizeImage; double* gy; gy =..

언어/C 2024.04.18
728x90
728x90