반응형

언어/C 25

C언어 영상처리 예정

패딩 - 반사 패딩, 엣지 패딩 등 좀 더 다양하게 알아보기 영상처리에서 필터를 적용하기 전에 사용하는 패딩에는 다양한 종류가 있습니다. 아래에서 몇 가지 패딩 방법을 설명해드리겠습니다: Nearest Padding (가장 가까운 픽셀 복사): 이미지의 가장자리에 있는 픽셀을 복사하여 패딩합니다. Zero Padding (0으로 픽셀 테두리 값 채우기): 이미지의 테두리 값을 0으로 채워 패딩합니다. 주로 컨볼루션 연산에서 사용됩니다. Reflection Padding (반사 패딩): 이미지의 가장자리 값을 반사하여 패딩합니다. 이 방법은 이미지 경계를 부드럽게 처리하는 데 도움이 됩니다. Edge Padding (엣지 패딩): 이미지의 가장자리 값을 가장 가까운 픽셀 값으로 채워 패딩합니다. Const..

언어/C 2024.04.17

C언어 영상처리 다양한 필터

이미지 처리에서 사용할 수 있는 다양한 필터들이 있으며, 각각 특정 종류의 노이즈와 상황에 따라 장단점이 있습니다. 여기서 몇 가지 일반적인 필터들을 소개하고, 각각의 용도와 추천 상황에 대해 설명하겠습니다. 1. 평균 필터 (Mean Filter) 설명: 주변 픽셀의 평균 값을 사용하여 현재 픽셀 값을 대체합니다. 장점: 간단하고, 연산 속도가 빠릅니다. 단점: 에지(edge)가 흐려질 수 있으며, 극단적인 노이즈에는 효과가 제한적입니다. 적합한 사용 경우: 이미지에서 무작위 노이즈를 감소시키고 싶을 때, 그러나 에지 보존이 중요하지 않은 경우. 2. 미디언 필터 (Median Filter) 설명: 주변 픽셀들을 크기 순으로 정렬한 후 중앙값을 선택하여 현재 픽셀을 대체합니다. 장점: 솔트 앤 페퍼 노..

언어/C 2024.04.17

C언어 영상처리 정리 2 - UpDownsampling, Histogram, HE....

8강 - Filter (Denoising) C에서 저 와 >와 그 소금 후추 노이즈에서 prob가 작으면 이걸 쓰고, prob가 크면 median을 써야할지...? 솔트 앤 페퍼 노이즈(salt and pepper noise) 또는 임펄스 노이즈는 이미지에 무작위로 분포한 매우 밝거나 매우 어두운 픽셀들이 나타나는 현상입니다. 이러한 노이즈는 이미지 데이터의 극단적인 값 변경을 일으키기 때문에 일반적인 평균 필터(mean filter)나 가우시안 필터(Gaussian filter) 등을 사용하여 제거하기 어렵습니다. 이런 필터들은 노이즈가 포함된 픽셀을 평균화할 때, 노이즈의 극단값이 결과에 영향을 미칠 수 있기 때문입니다. 미디언 필터 (Median Filter) 미디언 필터는 임펄스 노이즈 제거에 효..

언어/C 2024.04.15

C언어 영상처리 정리 1 - embedding, Multiplication, pixels...

3강 - Resolution (영상 크기) bit-depth : 픽셀 1개가 1비트 - 검정, 흰색 = 2비트 -> (0,0) (0,1) 등으로 표현 가능 우리가 사용하는 bmp 파일은 3색에 8비트 씩이므로 24이다 픽셀 수 = width * height 4강 - image format 10*10은 픽셀 100개가 맞으나 RGB가 있으니 30*10개로 생각하고 구현해야 한다. 5강 - Color Model luminance : 휘도 - 반사 되어 들어오는 혹은 광원의 빛의 양 Y만 사용하면 흑백 사진을 만들 수 있다. 6강 - Pixel operation subtraction : 뺀다, 뺄셈 이건 과제 1에서 진행했습니다. 2024.03.20 - [언어/C] - C언어 영상처리 - 과제 1

언어/C 2024.04.14

C 언어 영상처리 과제 3 - HE를 통해 선명한 사진 얻기

이 사진을 사용할 예정이었습니다.... 흑백으로 변환된 사진 이 사진 히스토그램 확실히 어두운 사진이라 잘 나올줄 알았건만... 음 좀 더 무서워졌네요....... 잘 된건데... 힝.... 꿀팁하나라면 ... https://cloudconvert.com/jpg-to-bmp JPG to BMP | CloudConvert JPG Converter JPG JPG, also known as JPEG, is a file format that can contain image with 10:1 to 20:1 lossy image compression technique. With the compression technique it can reduce the image size without losing the ima..

언어/C 2024.04.09

C언어 영상처리 - Histogram Equalization

이번에 주어진 이미지 입니다. 과하게 어두워보이죠 히스토그램을 확인해보니 절반이 잘려있습니다. 이제 이 이미지를 잘 복원하여 주관적 화질 평가를 높여봅시다. 히스토그램을 확인해보면 절반만에 다 사용했습니다. 이 픽셀 사용을 아래와 같게 만들어 줄 것입니다. // get Histogram for (int j = 0; j 255 ? 255 : (y[j * width + i] < 0 ? 0 : y[j * width + i]))]++; } } for (int i = 0; i < 255; i++) { histogram[i + 1] += hist..

언어/C 2024.04.04

C언어 영상처리 - Histogram

히스토그램을 통해 우린 픽셀 민감도의 분포를 표현할 수 있다. 분포를 보고 우린 segmentation할 수 있다. thresholding을 통해 일정 부분 이상의 위치를 볼 수 있고, 그 부분만 필터를 취할 수 있다. AI가 나오면서 한번에 가능해졌지만 일단 수업이므로... 코드는 전부 함수화를 하였다. void histo(int height, int width, double* y, int size,int stride, BITMAPFILEHEADER bmpFile, BITMAPINFOHEADER bmpInfo) { double* histogram; histogram = (double*)calloc(256, sizeof(double)); // get Histogram for (int j = 0; j < ..

언어/C 2024.04.02

C언어 영상처리 - padding, filters

CNN에서 사용했던 패딩과 똑같은 개념입니다. 2023.12.13 - [인공지능/공부] - CNN - 기본 개념 CNN - 기본 개념 우리는 여태까지 FCN으로 tensorflow에서 Dense만 사용해왔다. 그러나 사진과 같은 경우엔 해상도가 만만치 않아 대충 1000*1000이라고 하면 일렬로 나열하면 1000000이 된다. 이게 Dense layer 하나만 거쳐서 yoonschallenge.tistory.com 중앙값으로 필터를 취하는 것이다. 여기선 평균값을 취하는 필터이다. 여기서 한번 진행할 때 마다 원래 행렬 크기가 k*k -> (k-2) * (k-2)가 되므로 padding을 붙여준다. //padding int padding = 1; int pwidth = width + padding * ..

언어/C 2024.03.28

영상처리 과제 2 - PSNR 구하기

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include int main() { // 이거 하나 제출하면 된다. BITMAPFILEHEADER bmpFile, bmpFile2; BITMAPINFOHEADER bmpInfo, bmpInfo2; FILE* inputFile = NULL, * inputFile2 = NULL; inputFile = fopen("originalY.bmp", "rb"); // 파일명 확실하게 inputFile2 = fopen("testY.bmp", "rb"); // 경로도 확실하게 fread(&bmpFile, sizeof(BITMAPFILEHEADER), 1, inputFile); fread(&bmpInfo, size..

언어/C 2024.03.28

c언어 복습 - 입력, python도 조금

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include int main(){ char a[100]; char b[100]; int c; // gets() 예제: 보안상 사용을 권장하지 않음. // gets(a); // 띄어쓰기 포함 한 줄 전체를 입력 받음 // fgets() 사용 예제: 안전하게 한 줄 입력 받기 printf("fgets()로 입력: "); fgets(a, sizeof(a), stdin); // stdin에서 최대 sizeof(a)-1 글자를 읽어 a에 저장 // scanf() 사용 예제: 공백 전까지 문자열 입력 받기 printf("scanf()로 문자열 입력: "); scanf("%s", b); // 공백, 탭, 개행..

언어/C 2024.03.22
728x90
728x90