RSS
Image

Canny edge issue

Advertisements
 
Leave a comment

Posted by on December 14, 2018 in OpenCV

 

ASSERT: “false” in file qasciikey.cpp error

After googling, I found this error is likely to occur when using python.  However, I got this error due to the simultaneous using both cvShowImage and imshow.  So I replaced cvShowImage to imshow and the error has gone.

 
Leave a comment

Posted by on December 11, 2018 in OpenCV

 

The places where Windows 10 wall photos are taken.

https://spotlight.it-notes.ru/

The above site tells you where the beautiful photos of Window 10 log-in background are taken.

 
Leave a comment

Posted by on March 14, 2018 in Misc

 

Preventing MobaXTerm SSH session from freezing

reference : http://www.smallake.kr/?p=19226

Whenever I go out to have lunch and come back to my desk, the SSH session in MobaXTerm is freezed.
So I turn on [Settings -> SSH -> SSH settings -> SSH keepalive] option.
Let me see if this works.

 
Leave a comment

Posted by on March 14, 2018 in Misc

 

Binary cross entropy and cross entropy loss usage in PyTorch

reference
https://discuss.pytorch.org/t/lstm-crossentropyloss-change-to-bceloss/5320/4

t1 = torch.randn(10, 2)
print ('t1 : ', t1)
score = Variable(t1)
t2 = torch.rand(10) > 0.5
print ('t2 : ', t2)
t3 = t2.long()
print ('t3 : ', t3)
target = Variable(t3)
lfn1 = torch.nn.CrossEntropyLoss()
lfn2 = torch.nn.BCELoss()
t4 = lfn1(score, target)
print('t4 : ', t4)
t5 = torch.nn.functional.softmax(score)
print ('t5 : ', t5)
t6 = t5[:, 1]
print ('t6 : ', t6)
t7 = target.float()
print ('t7 : ', t7)
t8 = lfn2(t6, t7)
print('t8 : ', t8)t.float()))

결과

t1 :
-0.6985 0.4857
-0.4547 0.8040
-1.4664 1.2185
0.5449 0.0662
0.7061 -0.6480
-0.8922 0.4205
0.1444 -0.1308
1.4784 0.7342
0.6642 -0.3723
-0.9741 -0.3100
[torch.FloatTensor of size 10×2]

t2 :
1
1
0
0
0
0
1
1
0
1
[torch.ByteTensor of size 10]

t3 :
1
1
0
0
0
0
1
1
0
1
[torch.LongTensor of size 10]

t4 : Variable containing:
0.8223
[torch.FloatTensor of size 1]

t5 : Variable containing:
0.2343 0.7657
0.2212 0.7788
0.0639 0.9361
0.6174 0.3826
0.7948 0.2052
0.2120 0.7880
0.5684 0.4316
0.6779 0.3221
0.7382 0.2618
0.3398 0.6602
[torch.FloatTensor of size 10×2]

t6 : Variable containing:
0.7657
0.7788
0.9361
0.3826
0.2052
0.7880
0.4316
0.3221
0.2618
0.6602
[torch.FloatTensor of size 10]

t7 : Variable containing:
1
1
0
0
0
0
1
1
0
1
[torch.FloatTensor of size 10]

t8 : Variable containing:
0.8223
[torch.FloatTensor of size 1]

The results of [CrossEntropyLoss] and [softmax + BCELoss] are the same, which means CrossEntropyLoss includes softmax in it.

 
Leave a comment

Posted by on March 13, 2018 in PyTorch

 

Element-wise operations over multiple tuples in Python

aa, bb, cc = (1, 3), (9, 31), (20, 60)
d = tuple(map(lambda a, b, c: a * b + c, aa, bb, cc))
print(d)
>> (29, 153)
e = tuple(map(lambda a, b, c: a * 10 + b > c, aa, bb, cc))
print(e)
>> (False, True)

 

 
Leave a comment

Posted by on March 2, 2018 in Python

 

Tags: ,

Intrinsic camera parameters for resized images set of a chessboard

I realized that it is more convenient to resize (downsize) the input camera image to the small standard size (in my case 320 x 240) instead of change parameters accordingly to each camera image size every time.  That is, the original large image and its intrinsic parameters are just used  for displaying the rendered scene of augmented reality and all the processing behind is done with the resized image and the corresponding intrinsic parameters.

Basically, intrinsic camera parameters are needed for calculating the projection of 3D point on to the image plane.  Such projection appears to be important part in visual SLAM as predicting observation of 3D landmarks for current frame based on the camera pose and 3D map estimation of the previous frame.

So for getting the resized image, all that I have to do is to use cv::resize() function of OpenCV.  For the corresponding intrinsic parameters, I have to do something.  I have to create the intrinsic parameters of virtual camera from a physically existing and calibrated camera.

Intuitively, among intrinsic parameters, the focal length and principal point of the resized image can be calculated by just scaling as resizing ratio.  For example, if the original camera image is 1280 x 960 and resized image is 320 x 240, the ratio is 1/4 and the focal length and principal point is scaled so.

What about distortion factors? Should I scale them as the focal length and principal point?  I posted the following question on the visual slam community board in Google plus and  José Jerónimo Moreira Rodrigues gave me an answer saying “distortion factors remain the same due to their definitions”.  Thanks Rodrigues.

My question :

Let’s say I have chessboard images of size w(width) and h(height). (Notice that w and h are not the actual size of the chessboard but that of the images of chessboard.)
After (Zhang’s) camera calibration, the resulted intrinsic camera parameters are fx(focal length x), fy(focal length y), cx(principal point x), cy(principal point y), k1(1st distortion factor), k2(2nd distortion factor), k3(3rd distortion factor), k4(4th distortion factor), k5(5th distortion factor).
If I resize the chessboard images by half so that the width and height of the resized images are w/2 and h/2 respectively and conduct camera calibration again, I would expect to theoretically get fx/2 ,fy/2, cx/2 and cy/2 as focal length x, focal length y, principal point x and principal point y respectively.
How about distortion factors ? What would I expect to get theoretically the 1st, 2nd, 3rd, 4th and 5th distortion factors of the resized chessboard images in terms of k1, k2, k3, k4 and k5 ?

Rodrigues :

They dont change. They are function of X/Z and Y/Z. Checkhttp://www.vision.caltech.edu/bouguetj/calib_doc/htmls/parameters.html. Only the intrinsic matrix changes, not the distortion coefficients.

 

The experiment using Camera calibration toolbox for Matlab with chessboard images in the OpenCV example folder also shows the distortion factors do NOT change.
I did the experiment by making two (1280 x 960 and 320 x 240) sets of images from the original chessboard images (640×480) in OpenCV example folder.    The result is

1280 x 960 (double)
Focal Length:          fc = [ 1074.34831   1073.83567 ]
Principal point:       cc = [ 653.70628   499.16838 ]
Distortion:            kc = [ -0.28805   0.10555   -0.00083   0.00033  0.00000 ] 640 x 480 (original)
Focal Length:          fc = [ 536.93593   536.52653 ]
Principal point:       cc = [ 326.87081   249.24606 ]
Distortion:            kc = [ -0.28990   0.10780   -0.00079   0.00017  0.00000 ]
320 x 240 (half)
Focal Length:          fc = [ 268.65196   268.42076 ]
Principal point:       cc = [ 162.95051   124.58663 ]
Distortion:            kc = [ -0.29024   0.10502   -0.00072   -0.00004  0.00000 ]

chessboards