Histogram Comparison for Image Analysis

DRAFT This is the first article in the series on Image Comparison using Local Binary Patterns.Complete code is on github lbp-matcher We will start off by looking at different methods of comparing histograms. Histogram Intersection Log Likehood Chi Squared Kullback Leibler Divergence All our operations will be performed on 8bpp(bits per pixel) images anything that …

Histogram Comparison for Image Analysis Read More »

Fingerprint cannot be generated while adding new ssh key in GitLab

This applies to Windows only machines. I have GitLab running and was adding a new ‘ssh key’ from windows that was generated using a standard ssk-keygen command but was reciving following error: “Fingerprint cannot be generated” Command used to generate key: ssh-keygen -t rsa -C “gbugaj@localhost” -b 4096 This produces a key in ‘id_rsa.pub’ file, …

Fingerprint cannot be generated while adding new ssh key in GitLab Read More »

Kryo (missing no-arg constructor): java.nio.HeapByteBuffer

While serializing ByteBuffer using Kryo we will run into the following issue. Class cannot be created (missing no-arg constructor): java.nio.HeapByteBuffer To fix this we can create a custom serializer that will take a ByteBuffer and serialize it to and from Kryo. Serializer is rather simple all we need is two pieces of data, length of …

Kryo (missing no-arg constructor): java.nio.HeapByteBuffer Read More »

EventEmitter

Our EventEmitter in PhantomSQL is based on NodeJS version so they should be compatible. Here are couple examples on how to use the emitter. Basic usage of registering and listening to an event. "use strict";   const {EventEmitter} = require(’events’);   // Dump all the args em.on(’hello-event’, (…arg)=> {console.info("Hello event handler : " + arg)}); …

EventEmitter Read More »

Creating Javascript accessible object from C++ / CEF

Example with Chromium Embedded Framework (CEF) on how to create an object in C++ and make it accessible via Javascript. console.inof(api) Object {ready: true, version: "psql.0.0.1", info: Object, getVersion: function}console.inof(api) Object {ready: true, version: "psql.0.0.1", info: Object, getVersion: function} void ExtractEngineApp::OnContextCreated( CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefV8Context> context) {   auto info = CefV8Value::CreateObject(NULL, NULL); info->SetValue("major", …

Creating Javascript accessible object from C++ / CEF Read More »

Data retrieval service with exponential backoff

Here we will create Data retrieval service with exponential backoff that we covered in the previous post. Implementation   package com.rms.blueprint.data;   import java.util.Date; import java.util.Objects; import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.function.ObjLongConsumer; import java.util.function.Supplier;   import org.slf4j.Logger; import org.slf4j.LoggerFactory;   public class DataRetrievalWithBackoff implements Runnable { public final Logger LOGGER = LoggerFactory.getLogger(DataRetrievalWithBackoff.class);   private final …

Data retrieval service with exponential backoff Read More »