본문 바로가기

Programming

Arithmetic of complex number(2) division example code, 복소수 사칙연산(2) 나눗셈 코드, real/imaginary, java, opencv, matrix (2)

Arithmetic of complex number(2) division example code, 

복소수 사칙연산(2) 나눗셈 코드, real/imaginary, java, opencv, matrix (2)




공식은..

Formula..


i^2 = -1, 

c+di != 0.



(a + bi) / (c + di)


-> ( (ac + bd) / (c^2 + d^2) ) + ( (bc - ad) / (c^2 + d^2) )




곱셈은 아래에

Division formula is below


2018/11/22 - [Programming/Java] - Arithmetic of complex number(1) multiply example code, 복소수 사칙연산(1) 곱셈 코드, real/imaginary, java, opencv, matrix (1)




 위의 공식대로 Mat을 pixel 단위로 연산해준 코드이고, compMultiComp 함수는

위에서 링크한 곱셈공식을 이용했다. 현재는 Core 함수로 전부 고쳤고 옛날 코드라서 살짝 안맞는게 있을지 모르겠음.


이후에 Core로 고친 코드도 포스팅 해야겠다


 The code below is operating each pixel val in Mat same as formula above,

compMultiComp method is in link (multiply example).


 Now I fixed all code using Core in CV lib, so it's old code.


 Imma post code using Core later. tschuss~




Lemme see code..


코드를 보자..



/**

 * 2 channel complex mat division

 * JUnit test1 complete - 2018-10-25

 * @param mat1

 * @param mat2

 * @return

 */

public static void mat2CDivByMat2C(final Mat mat1, final Mat mat2, final Mat dst) {

//2

//1

Mat tempMat = Mat.zeros(mat1.rows(), mat1.cols(), CvType.CV_32FC2);

int rows = mat1.rows();

int cols = mat1.cols();

for (int i = 0; i < rows; ++i)

{

for (int j = 0; j < cols; ++j)

{

double[] buffer1 = mat1.get(i, j);

double[] buffer2 = mat2.get(i, j);

double[] buffer3 = buffer2.clone();

buffer3[1] = -buffer3[1];

double[] numerator = compMultiComp(buffer1, buffer3);

double denominator = Math.pow(buffer2[0], 2) + (Math.pow(buffer2[1], 2));

buffer1[0] = numerator[0] / denominator;

buffer1[1] = numerator[1] / denominator;

tempMat.put(i, j, buffer1);

}

}

}




Something else you might like...




2018/11/22 - [Programming/Java] - Arithmetic of complex number(1) multiply example code, 복소수 사칙연산(1) 곱셈 코드, real/imaginary, java, opencv, matrix (1)


2018/11/22 - [Programming/Java] - Java foreach statement (advanced for iteration statement) 자바 향상된 for문 문법


2018/11/22 - [Programming/Image Processing] - OpenCv, How to create/initialize mat in CV for Java, 매트릭스 생성/초기화, 자바, c++, JavaCv


2018/11/22 - [Programming/C++] - Visual Studio console closing problem after running main function 비주얼스튜디오 메인 실행 후 콘솔 꺼지는 문제


2018/11/17 - [Programming/C++] - How to initialize vector in C++ STL (Standard Template Library), STL 벡터 초기화 방법


2018/11/17 - [Programming/C++] - C++ How to convert string to integer in C++, string 에서 int 변환하는 방법, Easiest way to convert string to int.



2018/11/17 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #29 chessBoardCellColor. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/11/15 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #28 alphabeticShift. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/11/15 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #27 variableName. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar