From 54dd39daa8a7ca35d08417d82b601711eb6ed42b Mon Sep 17 00:00:00 2001
From: "li.zhenye"
Date: Sat, 30 Jul 2022 10:04:36 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=9B=BE=E5=83=8F=E5=81=8F?=
=?UTF-8?q?=E7=A7=BB=E7=A8=8B=E5=BA=A6=E5=92=8C=E9=98=9F=E5=88=97=E8=A1=A5?=
=?UTF-8?q?=E5=81=BF=E7=A8=8B=E5=BA=8F=E6=B5=8B=E8=AF=95=E6=9C=AA=E5=AE=8C?=
=?UTF-8?q?=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 34 +++++++++++++++++++++++++++++++++-
main_test.py | 13 +++++++------
2 files changed, 40 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index c6915da..1a742c8 100644
--- a/README.md
+++ b/README.md
@@ -129,7 +129,13 @@
引入了RGB和光谱图像的原因,这里牵扯到图像对齐的问题。
-这里可以看到对齐的结果:
+### 对齐检测算法
+
+理论大概是这样,但是这不重要啦,简单来说就是偏差平面里头计算响应强度,这是当时的草稿。
+
+
+
+实现以后这里可以看到对齐的结果,算法实现在`main_test.py`里头的`calculate_delta()`:

@@ -143,3 +149,29 @@

这张图片里的上下偏差则达到了2.6厘米左右。
+
+### 图像拍摄脉冲触发问题
+
+2022年7月30日我们进行了二次实验,本来以为会得到一个恒定的偏差结果,但是,情况并不像我们想的那样:
+
+
+
+
+
+从这张图可以看到,两张图的偏差大概是上下10像素,RGB偏上,左右偏差19像素,RGB偏左,
+
+但是!RGB图像明显是扭曲的,这显然是由于触发导致的。
+
+从其他图片来看:
+
+
+
+明显也存在图像扭曲的情况,偏差情况是:
+
+这张图上下已经对不上了,用它计算的偏差不具备参考价值。
+
+
+
+偏差的影响,也可从这幅图当中看到,这幅图的上下偏差达到了惊人的200像素,明显考虑是触发有问题了,不然偏差值至少是恒定的。
+
+结论是考虑RGB相机的触发存在一定问题。
diff --git a/main_test.py b/main_test.py
index 109ec0d..6a03238 100644
--- a/main_test.py
+++ b/main_test.py
@@ -70,7 +70,7 @@ class TestMain:
print(delta)
self.merge(rgb_img=rgb_img, rgb_mask=rgb_mask,
spec_img=spec_img[..., [21, 3, 0]], spec_mask=spec_mask,
- file_name=rgb_file_name)
+ rgb_file_name=rgb_file_name, spec_file_name=spec_file_name)
def test_rgb(self, rgb_img, img_name):
rgb_mask = self._rgb_detector.predict(rgb_img)
@@ -93,13 +93,14 @@ class TestMain:
return spec_mask
@staticmethod
- def merge(rgb_img, rgb_mask, spec_img, spec_mask, file_name):
+ def merge(rgb_img, rgb_mask, spec_img, spec_mask, rgb_file_name, spec_file_name):
mask_result = (spec_mask | rgb_mask).astype(np.uint8)
mask_result = mask_result.repeat(Config.blk_size, axis=0).repeat(Config.blk_size, axis=1).astype(np.uint8)
fig, axs = plt.subplots(3, 2)
- axs[0, 0].set_title(file_name)
+ axs[0, 0].set_title(rgb_file_name)
axs[0, 0].imshow(rgb_img)
axs[1, 0].imshow(spec_img)
+ axs[1, 0].set_title(spec_file_name)
axs[2, 0].imshow(mask_result)
axs[0, 1].imshow(rgb_mask)
axs[1, 1].imshow(spec_mask)
@@ -107,7 +108,7 @@ class TestMain:
plt.show()
return mask_result
- def calculate_delta(self, rgb_img, spec_img, search_area_size=(200, 200), eps=1):
+ def calculate_delta(self, rgb_img, spec_img, search_area_size=(400, 200), eps=1):
rgb_grey, spec_grey = cv2.cvtColor(rgb_img, cv2.COLOR_RGB2GRAY), cv2.cvtColor(spec_img, cv2.COLOR_RGB2GRAY)
_, rgb_bin = cv2.threshold(rgb_grey, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
_, spec_bin = cv2.threshold(spec_grey, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
@@ -161,5 +162,5 @@ class TestMain:
if __name__ == '__main__':
testor = TestMain()
- testor.pony_run(test_path=r'/Volumes/LENOVO_USB_HDD/zhouchao/728-tobacco/correct',
- test_rgb=True, test_spectra=True, get_delta=False)
+ testor.pony_run(test_path=r'/Volumes/LENOVO_USB_HDD/zhouchao/0730saved_img/correct',
+ test_rgb=True, test_spectra=True, get_delta=True)