728x90 Quality control (Univ. Study)/Digital Image Processing27 Digital Image Processing - MRF / Graph Cuts Spatial similarity검은 배경에 흰색 디스크가 있는 이미지를 각 픽셀의 색을 확률에 따라 독립적으로 칠하면 아래와 같이 noise가 굉장히 많이 나타난다. 이러한 결과는 이미지는 공간적인 관점에서 연속적이라는 사실을 반영하지 않았기 때문이다.이러한 문제를 해결하기 위해 인접한 픽셀과의 관계를 반영한 아래의 식을 이용하면 픽셀의 label을 더욱 잘 예상할 수 있다.Individual predictions 부분을 보면 말 그대로 각 픽셀 단위의 연산이다. yi는 0(background) 또는 1(foreground)로 labeling되는 픽셀 값이고 theta는 알고리즘의 매개변수, data는 raw image 자체이다.Pairwise predictions 부분은 yi(해당 픽셀), yj(인접.. 2024. 5. 15. DIP 실습 - Segmentation / Clustering 문제풀이 코드#include#include#include"opencv2/core/core.hpp"#include"opencv2/highgui/highgui.hpp"#include"opencv2/imgproc/imgproc.hpp"#include using namespace cv;using namespace std;#include void CvColorModels(Mat bgr_img) { Mat gray_img, rgb_img, hsv_img, yuv_img, xyz_img; cvtColor(bgr_img, gray_img, COLOR_BGR2GRAY); cvtColor(bgr_img, rgb_img, COLOR_BGR2RGB); cvtColor(bgr_img, hsv_img, COLOR_BGR2HSV.. 2024. 5. 15. DIP 실습 - Band pass filter / Frequency domain 과제풀이 코드#include #include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"using namespace cv;using namespace std;Mat padding(Mat img) { int dftRows = getOptimalDFTSize(img.rows); int dftCols = getOptimalDFTSize(img.cols); Mat padded; copyMakeBorder(img, padded, 0, dftRows - img.rows, 0, dftCols - img.cols, BORDER_CONSTANT, Scalar::all(0)); return.. 2024. 5. 14. DIP 실습 - Gaussian / Sobel / Gaussian Pyramid / Laplacian Pyramid 문제▪ 9x9 Gaussian filter를 구현하고 결과를 확인할 것▪ 9x9 Gaussian filter를 적용했을 때 히스토그램이 어떻게 변하는지 확인할 것▪ 영상에 Salt and pepper noise를 주고, 구현한 9x9 Gaussian filter를 적용해볼 것▪ 45도와 135도의 대각 에지를 검출하는 Sobel filter를 구현하고 결과를 확인할 것▪ 컬러영상에 대한 Gaussian pyramid를 구축하고 결과를 확인할 것▪ 컬러영상에 대한 Laplacian pyramid를 구축하고 복원을 수행한 결과를 확인할 것#include #include #include using namespace cv;using namespace std;//3X3 커널 구현int myKernelConv3x3.. 2024. 5. 13. Digital Image Processing - Clustering / Segmentation ClusteringClustering은 대표적인 unsupervised learning의 예시중 하나이다. Clustering은 비슷한 특성을 가진 데이터를 군집화 하는 것을 말한다. 각 군집 내의 데이터는 최대한 유사하고 다른 군집 간의 데이터는 최대한 차별화되도록 하는 것이 clustering의 목적이다. 아래와 같이 다양한 clustering기법이 존재하고 각각 데이터 구조에 따른 분류 성능이 다르다. Clustering 과정을 아주 간단히 말하면 군집내의 분산을 최소화하는 과정이다. 이는 아래와 같이 식으로도 표현할 수 있다.각 군집의 데이터와 군집의 중심간의 거리의 합의 평균이 최소가 되도록 하는 것을 볼 수 있다.K-Means ClusteringK-Means Clustering은 군집의 수 K.. 2024. 5. 8. Digital Image Processing - Color Image Processing Backgrounds of Color색의 3속성은 흔히 색상(Hue), 명도(Brightness,value), 채도(Purity,saturation,chroma)로 불린다.Primary color(원색)은 서로 혼합되어 다른 컬러를 생성하는 기본 색상으로 일반적으로 R,G,B의 3색을 이용한다. 100% 모든 color를 생성하지는 못하지만 practically 충분하다.Color gamut은 Primary color의 조합으로 만들어낼 수 있는 모든 컬러를 말한다.CIE XYZ Color ModelCIE(CommissionInternationaledeI'Eclairage,International Commission on Illumination)에서 제정한 모델로 CIE primary color를 정했다.. 2024. 5. 1. Digital Image Processing - Fourier transform / Frequency domain 푸리에 변환 푸리에 변환은 Fourier가 제시한 아이디어인 Fourier series라는 모든 주기함수는 각기 다른 주파수의 사인과 코사인 함수의 가중합으로 표현될 수 있다는 아이디어로부터 확장된 개념이다. 아래 그림은 다양한 주파수의 사인함수를 더해서 unit function에 수렴하게 만드는 대표적인 Fourier series의 예시이다. 푸리에 변환은 어떤 함수를 주기함수(주파수를 갖는 함수)의 합으로 표현할 수 있다는 개념을 차용하여 아래와 같이 변환하는 방법이다. 물론 그 역과정을 통해 원시함수를 찾아내는 푸리에 역변환 과정도 가능하다. 이때 F(w)는 Magnitude가 A이고 Phase가 Ø인 주기함수이고 각각은 아래와 같이 실수부 R(w)과 허수부 I(w)로 표현된다. Continuous.. 2024. 4. 18. Digital Image Processing - Warping Image warping 이미지 워핑은 이미지의 형태를 변형하는 과정으로, 특정 알고리즘에 따라 이미지의 픽셀을 새로운 위치로 매핑함으로써 이미지의 모양을 변형시키는 과정이다. 아래와 같이 다양한 워핑 기법이 존재한다. 이미지 필터링이 아래와 같이 화소의 range를 바꾸는 기법이라면 이미지 와핑은 아래와 같이 spatial domain 자체를 바꾸는 기법이다. Forwad Warping Source image(f(x))의 픽셀들을 h(x)함수에 따라 Target(g(x))의 지정된 위치에 옮기는 방식이다. 그러나 새롭게 옮긴 값들이 아래 그림과 같이 픽셀들의 사이에 위치하게 되는 문제가 있다. 이를 해결하기 위해 고안된 방법이 splatting이다. Splatting이란 본래 액체가 팍 튄다는 뜻인데 .. 2024. 4. 15. DIP 실습 - Median / Bilateral / Canny edge detection Median filter 과제: salt_pepper2.png에 대해서 3x3, 5x5의 Median 필터를 적용해보고 결과를 분석할 것 #include #include #include using namespace cv; using namespace std; // 중간값 필터 함수 Mat MedianFilter(const Mat& src, int kernelSize) { Mat dst = src.clone(); // 출력 이미지 초기화 int pad = kernelSize / 2; // 패딩 크기 계산 // 이미지의 각 픽셀에 대해 중간값 필터 적용 for (int i = pad; i < src.rows - pad; i++) { for (int j = pad; j < src.cols - pad; j++).. 2024. 4. 12. 이전 1 2 3 다음 728x90