From d17b33131c14864bd1eae275f49a3f148e21cf29 Mon Sep 17 00:00:00 2001 From: Leo Chan Date: Thu, 22 Oct 2020 01:53:21 -0400 Subject: Squashed commit of the sb-vbs branch. Includes the SD-VBS benchmarks modified to: - Use libextra to loop as realtime jobs - Preallocate memory before starting their main computation - Accept input via stdin instead of via argc Does not include the SD-VBS matlab code. Fixes libextra execution in LITMUS^RT. --- SD-VBS/common/toolbox/ikkjin/harris.m | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 SD-VBS/common/toolbox/ikkjin/harris.m (limited to 'SD-VBS/common/toolbox/ikkjin/harris.m') diff --git a/SD-VBS/common/toolbox/ikkjin/harris.m b/SD-VBS/common/toolbox/ikkjin/harris.m new file mode 100755 index 0000000..92a6543 --- /dev/null +++ b/SD-VBS/common/toolbox/ikkjin/harris.m @@ -0,0 +1,43 @@ + +% Sample code for detecting Harris corners, following +% Brown et al, CVPR 2005 +% by Alyosha Efros, so probably buggy... +% slightly modified by ikkjin + +function [x,y,v] = harris(imrgb); +[nr nc nb]=size(imrgb); +if nb==3 + im=rgb2gray(imrgb); +else + im=imrgb; +end + +im = im2double(im); +g1 = fspecial('gaussian', 9,1); % Gaussian with sigma_d +g2 = fspecial('gaussian', 11,1.5); % Gaussian with sigma_i +img1 = conv2(im,g1,'same'); % blur image with sigma_d +Ix = conv2(img1,[-1 0 1],'same'); % take x derivative +Iy = conv2(img1,[-1;0;1],'same'); % take y derivative + +% Compute elements of the Harris matrix H +%%% we can use blur instead of the summing window +Ix2 = conv2(Ix.*Ix,g2,'same'); +Iy2 = conv2(Iy.*Iy,g2,'same'); +IxIy = conv2(Ix.*Iy,g2,'same'); +R = (Ix2.*Iy2 - IxIy.*IxIy) ... % det(H) + ./ (Ix2 + Iy2 + eps); % trace(H) + epsilon + +% don't want corners close to image border +R([1:15, end-16:end], :) = 0; +R(:,[1:15,end-16:end]) = 0; + +% non-maxima supression within 3x3 windows +nonmax = inline('max(x)'); +Rmax = colfilt(R,[3 3],'sliding',nonmax); % find neighbrhood max +Rnm = R.*(R == Rmax); % supress non-max + +% extract all interest points +[y,x,v] = find(Rnm); + + + -- cgit v1.2.2