matlab在空白幕布上直接采用quiver函数绘画光流没有问题,但如果将光流添加到SO2浓度图像上,烟羽里面却不显示光流,这种情况应该怎么解决呢?
时间: 2024-02-27 21:55:36 浏览: 32
这种情况可能是因为光流的值范围与SO2浓度图像的值范围不一致,导致光流图像的值全部被截断,无法显示在SO2浓度图像中。您可以尝试使用MATLAB的`quiver`函数的第五个输入参数来限制矢量的长度,使其适应SO2浓度图像的范围。以下是修改后的示例代码:
```
% 创建光流对象
opticFlow = opticalFlowLK('NoiseThreshold',0.005);
% 计算光流
flow = estimateFlow(opticFlow,I1);
% 限制光流矢量的长度
scale_factor = 0.5; % 调整这个因子以适应您的SO2浓度图像
flow_mag = sqrt(sum(flow.^2, 3));
max_flow_mag = max(max(flow_mag));
flow(:,:,1) = flow(:,:,1)./flow_mag*max_flow_mag*scale_factor;
flow(:,:,2) = flow(:,:,2)./flow_mag*max_flow_mag*scale_factor;
% 将光流添加到SO2浓度图像中
figure;
imshow(I2);
hold on;
quiver(X,Y,flow(:,:,1),flow(:,:,2),0,'w'); % 在白色背景上绘制矢量
hold off;
```
在这个示例中,我们使用`max`函数计算光流矢量的最大长度,并使用`scale_factor`调整光流矢量的长度。然后,我们使用`quiver`函数将光流添加到SO2浓度图像中。注意,我们将最后一个参数设置为0,这将使`quiver`函数根据矢量的长度自动缩放箭头大小,以适应SO2浓度图像的大小。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)