mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-03 13:11:14 +08:00
Fixing many bugs; Working Censure for mode=Octagon
This commit is contained in:
@@ -28,13 +28,12 @@ def _get_filtered_image(image, no_of_scales, mode):
|
||||
scales = np.zeros((image.shape[0], image.shape[1], no_of_scales))
|
||||
integral_img = integral_image(image)
|
||||
integral_img1 = _slanted_integral_image_modes(image, 1)
|
||||
print '8'
|
||||
integral_img2 = _slanted_integral_image_modes(image, 2)
|
||||
print '9'
|
||||
integral_img2 = np.ascontiguousarray(integral_img2)
|
||||
integral_img3 = _slanted_integral_image_modes(image, 3)
|
||||
print '10'
|
||||
integral_img3 = np.ascontiguousarray(integral_img3)
|
||||
integral_img4 = _slanted_integral_image_modes(image, 4)
|
||||
print '11'
|
||||
integral_img4 = np.ascontiguousarray(integral_img4)
|
||||
for k in range(no_of_scales):
|
||||
n = k + 1
|
||||
filtered_image = np.zeros(image.shape)
|
||||
@@ -58,16 +57,15 @@ def _slanted_integral_image_modes(img, mode=1):
|
||||
image = np.copy(img, order='C')
|
||||
mode1 = np.zeros((image.shape[0] + 1, image.shape[1]), order='C')
|
||||
_slanted_integral_image(image, mode1)
|
||||
print '7'
|
||||
return mode1[1:, :]
|
||||
|
||||
elif mode == 2:
|
||||
image = np.copy(img, order='C')
|
||||
image = np.fliplr(image)
|
||||
image = np.flipud(image)
|
||||
image = np.ascontiguousarray(image)
|
||||
mode2 = np.zeros((image.shape[0] + 1, image.shape[1]), order='C')
|
||||
_slanted_integral_image(image, mode2)
|
||||
print '7'
|
||||
mode2 = mode2[1:, :]
|
||||
mode2 = np.fliplr(mode2)
|
||||
mode2 = np.flipud(mode2)
|
||||
@@ -77,9 +75,9 @@ def _slanted_integral_image_modes(img, mode=1):
|
||||
image = np.copy(img, order='C')
|
||||
image = np.flipud(image)
|
||||
image = image.T
|
||||
image = np.ascontiguousarray(image)
|
||||
mode3 = np.zeros((image.shape[0] + 1, image.shape[1]), order='C')
|
||||
_slanted_integral_image(image, mode3)
|
||||
print '7'
|
||||
mode3 = mode3[1:, :]
|
||||
mode3 = np.flipud(mode3.T)
|
||||
return mode3
|
||||
@@ -88,9 +86,9 @@ def _slanted_integral_image_modes(img, mode=1):
|
||||
image = np.copy(img, order='C')
|
||||
image = np.fliplr(image)
|
||||
image = image.T
|
||||
image = np.ascontiguousarray(image)
|
||||
mode4 = np.zeros((image.shape[0] + 1, image.shape[1]), order='C')
|
||||
_slanted_integral_image(image, mode4)
|
||||
print '7'
|
||||
mode4 = mode4[1:, :]
|
||||
mode4 = np.fliplr(mode4.T)
|
||||
return mode4
|
||||
@@ -176,5 +174,5 @@ def censure_keypoints(image, no_of_scales=7, mode='DoB', threshold=0.03, rpc_thr
|
||||
response[:, :, i] = _suppress_line(response[:, :, i], (1 + i / 3.0), rpc_threshold)
|
||||
|
||||
# Returning keypoints with its scale
|
||||
keypoints = np.transpose(np.nonzero(response[:, :, 1:no_of_scales])) + [0, 0, 1]
|
||||
keypoints = np.transpose(np.nonzero(response[:, :, 1:no_of_scales - 1])) + [0, 0, 2]
|
||||
return keypoints
|
||||
|
||||
@@ -37,21 +37,18 @@ def _slanted_integral_image(double[:, ::1] image,
|
||||
|
||||
right_sum_np = np.sum(image, 1).cumsum(0)
|
||||
|
||||
print '1'
|
||||
for i in range(image.shape[0]):
|
||||
image[i, 0] = left_sum_np[i]
|
||||
image[i, -1] = right_sum_np[i]
|
||||
|
||||
print '2'
|
||||
for i in range(1, integral_img.shape[0]):
|
||||
for j in range(integral_img.shape[1]):
|
||||
integral_img[i, j] = image[i - 1, j]
|
||||
|
||||
print '3'
|
||||
for i in range(1, integral_img.shape[0]):
|
||||
for j in range(1, integral_img.shape[1] - 1):
|
||||
integral_img[i, j] += integral_img[i, j - 1] + integral_img[i - 1, j + 1] - integral_img[i - 1, j]
|
||||
print '4'
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -70,20 +67,19 @@ def _censure_octagon_loop(double[:, ::1] image, double[:, ::1] integral_img,
|
||||
i_m = (mi - 1) / 2
|
||||
o_set = o_m + no
|
||||
i_set = i_m + ni
|
||||
print '5'
|
||||
|
||||
for i in range(o_set + 1, image.shape[0] - o_set - 1):
|
||||
for j in range(o_set + 1, image.shape[1] - o_set - 1):
|
||||
outer = integral_img1[i + o_set, j + o_m] - integral_img1[i + o_m, j + o_set] - integral_img[i + o_set, j - o_m] + integral_img[i + o_m, j - o_m]
|
||||
outer = integral_img1[i + o_set, j + o_m] - integral_img1[i + o_m - 1, j + o_set + 1] - integral_img[i + o_set, j - o_m] + integral_img[i + o_m - 1, j - o_m]
|
||||
outer += integral_img[i + o_m - 1, j + o_m - 1] - integral_img[i - o_m, j + o_m - 1] - integral_img[i + o_m - 1, j - o_m] + integral_img[i - o_m, j - o_m]
|
||||
outer += integral_img4[i + o_m, j - o_set] - integral_img4[i + o_set, j - o_m] - integral_img[i - o_m, j - o_m + 1] + integral_img[i - o_m, j - o_set - 1]
|
||||
outer += integral_img2[i - o_set, j - o_m] - integral_img2[i - o_m, j - o_set] - integral_img[i - o_m + 1, -1] - integral_img[i - o_set - 1, j + o_m - 1] + integral_img[i - o_m + 1, j + o_m - 1] + integral_img[i - o_set - 1, -1]
|
||||
outer += integral_img3[i - o_m, j + o_set] - integral_img3[i - o_set, j + o_m] - integral_img[-1, j + o_set + 1] - integral_img[i + o_m - 1, j + o_m] + integral_img[-1, j + o_m] + integral_img[i + o_m - 1, j + o_set + 1]
|
||||
outer += integral_img4[i + o_m, j - o_set] - integral_img4[i + o_set + 1, j - o_m + 1] - integral_img[i - o_m, j - o_m] + integral_img[i - o_m, j - o_set - 1]
|
||||
outer += integral_img2[i - o_set, j - o_m] - integral_img2[i - o_m + 1, j - o_set - 1] - integral_img[i - o_m, -1] - integral_img[i - o_set - 1, j + o_m - 1] + integral_img[i - o_m, j + o_m - 1] + integral_img[i - o_set - 1, -1]
|
||||
outer += integral_img3[i - o_m, j + o_set] - integral_img3[i - o_set - 1, j + o_m - 1] - integral_img[-1, j + o_set] - integral_img[i + o_m - 1, j + o_m - 1] + integral_img[-1, j + o_m - 1] + integral_img[i + o_m - 1, j + o_set]
|
||||
|
||||
inner = integral_img1[i + i_set, j + i_m] - integral_img1[i + i_m, j + i_set] - integral_img[i + i_set, j - i_m] + integral_img[i + i_m, j - i_m]
|
||||
inner = integral_img1[i + i_set, j + i_m] - integral_img1[i + i_m - 1, j + i_set + 1] - integral_img[i + i_set, j - i_m] + integral_img[i + i_m - 1, j - i_m]
|
||||
inner += integral_img[i + i_m - 1, j + i_m - 1] - integral_img[i - i_m, j + i_m - 1] - integral_img[i + i_m - 1, j - i_m] + integral_img[i - i_m, j - i_m]
|
||||
inner += integral_img4[i + i_m, j - i_set] - integral_img4[i + i_set, j - i_m] - integral_img[i - i_m, j - i_m + 1] + integral_img[i - i_m, j - i_set - 1]
|
||||
inner += integral_img2[i - i_set, j - i_m] - integral_img2[i - i_m, j - i_set] - integral_img[i - i_m + 1, -1] - integral_img[i - i_set - 1, j + i_m - 1] + integral_img[i - i_m + 1, j + i_m - 1] + integral_img[i - i_set - 1, -1]
|
||||
inner += integral_img3[i - i_m, j + i_set] - integral_img3[i - i_set, j + i_m] - integral_img[-1, j + i_set + 1] - integral_img[i + i_m - 1, j + i_m] + integral_img[-1, j + i_m] + integral_img[i + i_m - 1, j + i_set + 1]
|
||||
inner += integral_img4[i + i_m, j - i_set] - integral_img4[i + i_set + 1, j - i_m + 1] - integral_img[i - i_m, j - i_m] + integral_img[i - i_m, j - i_set - 1]
|
||||
inner += integral_img2[i - i_set, j - i_m] - integral_img2[i - i_m + 1, j - i_set - 1] - integral_img[i - i_m, -1] - integral_img[i - i_set - 1, j + i_m - 1] + integral_img[i - i_m, j + i_m - 1] + integral_img[i - i_set - 1, -1]
|
||||
inner += integral_img3[i - i_m, j + i_set] - integral_img3[i - i_set - 1, j + i_m - 1] - integral_img[-1, j + i_set] - integral_img[i + i_m - 1, j + i_m - 1] + integral_img[-1, j + i_m - 1] + integral_img[i + i_m - 1, j + i_set]
|
||||
|
||||
filtered_image[i, j] = outer_wt * outer - (outer_wt + inner_wt) * inner
|
||||
print '6'
|
||||
|
||||
Reference in New Issue
Block a user