测试图像偏移程度和队列补偿程序测试未完成

This commit is contained in:
li.zhenye 2022-07-30 10:04:36 +08:00
parent 5085fdbf1e
commit 54dd39daa8
2 changed files with 40 additions and 7 deletions

View File

@ -129,7 +129,13 @@
引入了RGB和光谱图像的原因这里牵扯到图像对齐的问题。
这里可以看到对齐的结果:
### 对齐检测算法
理论大概是这样,但是这不重要啦,简单来说就是偏差平面里头计算响应强度,这是当时的草稿。
![截屏2022-07-30 09.23.13](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/%E6%88%AA%E5%B1%8F2022-07-30%2009.23.13.png)
实现以后这里可以看到对齐的结果,算法实现在`main_test.py`里头的`calculate_delta()`
![Figure_1](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/Figure_1.png)
@ -143,3 +149,29 @@
![Figure_4](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/Figure_4.png)
这张图片里的上下偏差则达到了2.6厘米左右。
### 图像拍摄脉冲触发问题
2022年7月30日我们进行了二次实验本来以为会得到一个恒定的偏差结果但是情况并不像我们想的那样
![截屏2022-07-30 09.18.15](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/%E6%88%AA%E5%B1%8F2022-07-30%2009.18.15.png)
从这张图可以看到两张图的偏差大概是上下10像素RGB偏上左右偏差19像素RGB偏左
但是RGB图像明显是扭曲的这显然是由于触发导致的。
从其他图片来看:
![截屏2022-07-30 09.19.28](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/%E6%88%AA%E5%B1%8F2022-07-30%2009.19.28.png)
明显也存在图像扭曲的情况,偏差情况是:
![截屏2022-07-30 09.41.34](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/%E6%88%AA%E5%B1%8F2022-07-30%2009.41.34.png)这张图上下已经对不上了,用它计算的偏差不具备参考价值。
![截屏2022-07-30 09.20.34](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/%E6%88%AA%E5%B1%8F2022-07-30%2009.20.34.png)
偏差的影响也可从这幅图当中看到这幅图的上下偏差达到了惊人的200像素明显考虑是触发有问题了不然偏差值至少是恒定的。
结论是考虑RGB相机的触发存在一定问题。

View File

@ -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)