분류 전체보기
-
Averaging Filter와 Gaussian Filter컴공지식/컴퓨터비전 2024. 9. 6. 21:15
Averaging Filter는 이미지의 특정 영역(이웃한 픽셀들)의 값을 평균 내서 중심 픽셀의 값을 대체하는 필터다.이렇게 하면 이미지가 부드럽게 변하면서 노이즈가 줄어든다. 필터 마스크가 덮고 있는 영역 내의 모든 픽셀 값의 평균을 계산한다.예를 들어, 3x3 크기의 마스크를 사용한다면, 9개의 픽셀 값을 더한 후 9로 나눈 값을 중심 픽셀 값으로 설정하는 거다. 이 필터는 Low Pass Filter라고도 불린다.고주파 성분(즉, 급격한 밝기 변화)을 억제하고, 저주파 성분(즉, 서서히 변하는 밝기)을 남기기 때문에 이렇게 불린다.그래서 이미지의 세부 디테일이 줄어들면서 부드럽게 처리된다.이미지의 모든 픽셀에 대해, 그 픽셀이 포함된 이웃 영역의 평균 값으로 픽셀 값을 대체한다.이 과정을 이미지의..
-
Spatial Filtering이란?컴공지식/컴퓨터비전 2024. 9. 6. 17:34
Spatial Filtering은 이미지의 공간 영역에서 특정 마스크(또는 커널, 템플릿, 윈도우)를 사용해 필터링 작업을 수행하는 기법이다.이 마스크(또는 커널)는 작은 매트릭스 형태로, 특정 연산을 위해 이미지의 각 픽셀에 적용된다. Spatial filters = spatial masks, kernels, templates, windows 모두 같은 의미로 사용된다. 위 그림은 3x3 크기의 Spatial Filter가 어떻게 적용되는지를 보여준다.3x3 필터 마스크가 이미지 위에 놓여있다. 이 마스크가 이미지의 특정 부분과 겹쳐지는 방식으로 적용된다.필터 마스크 내부에는 각 위치의 값들이 있고, 이미지의 해당 위치에 있는 픽셀 값과 곱해진 후 합산된다.f(x, y)는 이미지의 각 픽셀 값을 의미..
-
감마 보정(Gamma Correction) 구현컴공지식/컴퓨터비전 2024. 9. 6. 00:36
이것도 마찬가지로 Intensity Transformation 중 하나인데코드로 살펴보자 이미지와 변수 초기화Mat image = imread("lena.png", 0); Mat gamma_img; float gamma = 0.5; unsigned char pix[256]; 이 또한 그레이스케일로 이미지를 불러오고 감마 보정을 적용한 결과를 저장할 gamma_img라는 변수를 선언한다.감마 값을 0.5로 설정한다. 감마 값이 1보다 작으니까, 결과 이미지는 원본보다 더 밝아지게 될 것이다.픽셀 값 변환을 위해 0부터 255까지의 값을 담는 배열을 선언한다. 감마 변환 테이블 생성for (int i = 0; i pix[i] = saturate_cast(pow((float)(i / 255.0), g..
-
로그 변환(Log Transformation) 구현컴공지식/컴퓨터비전 2024. 9. 6. 00:32
이것도 Intensity Transformation 중 하나인데 코드를 통해서 구현해보자 다음과 같이 이미지를 불러오고(이것도 마찬가지로 그레이스케일)Mat image = imread("lena.png", 0); 필요한 변수와 매트릭스를 생성해준다.Mat f_img, log_img; double c = 1.5f; // scale constant f_img와 log_img는 각각 변환된 이미지를 저장할 매트릭스다.c는 스케일 상수로, 로그 변환의 결과를 스케일링하는 데 사용한다.여기서는 1.5로 설정됐다. 그 다음은 이미지 타입을 변환해야 한다.image.convertTo(f_img, CV_32F); 이미지 데이터를 float 타입(CV_32F)으로 변환해 f_img에 저장한다.로그 변환은 실수형 데..
-
네거티브 변환(Negative Transformation) 구현컴공지식/컴퓨터비전 2024. 9. 6. 00:27
Intensity Transformation 중 네거티브 변환 구현 코드를 살펴보자 다음과 같이 이미지를 불러왔다고 치자Mat image = imread("lena.png", 0); 0을 두 번째 인자로 줬기 때문에 이미지는 그레이스케일이 된다. 그 다음은 네거티브 이미지를 위한 복사본 생성한다.Mat negative_img = image.clone(); image.clone()을 사용해 원본 이미지와 동일한 크기와 타입을 가진 negative_img라는 새로운 이미지를 생성한다. 이제 네거티브 변환을 수행해보자for (int j = 0; j for (int i = 0; i negative_img.at(j, i) = 255 - image.at(j, i); 여기서 이중 for 루프..
-
Pixel Access컴공지식/컴퓨터비전 2024. 9. 6. 00:23
Pixel Access는 이미지에서 특정 위치의 픽셀 값을 가져오는 방법이다.다음 코드를 살펴보자그레이스케일 이미지와 컬러 이미지에서 특정 좌표의 픽셀 값을 어떻게 가져오는지를 보여주는 코드다. image = imread("lena.png"); image_gray = imread("lena.png", 0);이미지를 다음과 같이 선언했다고 해보자. value = image_gray.at(50, 100);이 코드에서는 그레이스케일 이미지의 (50, 100) 좌표에 있는 픽셀 값을 가져오고 있다.여기서 이 좌표값은 (세로, 가로)이다.이 값은 uchar 타입으로, 픽셀의 밝기 값(0-255)을 나타낸다. value_B = image.at(50, 100)[0]; value_G = image.at(50, 1..
-
Entity References란?컴공지식/웹 2024. 9. 3. 13:20
특수 문자들은 XML에서 특별한 의미를 가지기 때문에, 그냥 사용하면 문제가 생길 수 있다.예를 들어, 다음은 잘못된 예시다.salary 여기서 XML 에러가 발생한다. 올바르게 사용하려면 다음과 같이 사용하면 된다.salary < 1000 여기서 <가 바로 Entity Reference다.<는 less than(작다)을 의미하는 특수 문자를 대신하는 코드다.이걸 사용하면 XML 파서가 자주 쓰이는 Entity References에 대해 소개하겠다. <: >: > (greater than, 크다)&: & (ampersand, 앰퍼샌드)": " (double quote, 큰따옴표)': ' (single quote, 작은따옴표)
-
XML의 Connector컴공지식/웹 2024. 9. 3. 13:09
다음 코드를 살펴보자 이건 서버 설정에서 사용하는 XML 코드다.주로 Tomcat 같은 웹 서버의 server.xml 파일에서 볼 수 있다. Connector는 서버와 클라이언트 간의 연결을 관리하는 중요한 요소다.클라이언트가 서버에 요청을 보내면, 이 Connector가 그 요청을 받아서 처리한다. port="8085"는 서버가 클라이언트의 요청을 기다리고 있는 포트 번호다.기본적으로 HTTP 요청은 포트 80을 사용하지만, 여기서는 8085라는 포트를 사용하고 있다. protocol="HTTP/1.1"는 인터넷에서 웹 페이지를 주고받는 데 사용하는 규칙이다. connectionTimeout="20000"는 서버가 클라이언트 연결을 기다리는 시간(밀리초 단위)이다.20000밀리초, 즉 20초 동..