• Matlab 图像处理中卷积的几种实现


    代码

    clear;close all;clc
    
    img1 = rand(5,5); % 输入图像
    img2 = rand(5,5); % 核
    
    % 卷积的几种实现方式
    a = conv2(img1,img2,'same');
    b = imfilter(img1,rot90(img2,2));
    c = imfilter(img1,img2,'conv');
    d = filter2(rot90(img2,2),img1);
    
    % 对比
    cmp = [a(:),b(:),c(:),d(:)];
    

    总结

    观察 cmp 矩阵后发现三者数值一样,但通过计算误差发现,仍然存在极小的误差,这与函数的实现原理有关,因此可以近似地认为以上三种方法能够获得一样的卷积效果。

    • 使用 conv2(A,B) 实现卷积,A 为图像,B 为核。
    • 使用 imfilter(A,rot90(B)) 实现卷积,A 为图像,B 为核。因为该函数主要功能是实现滤波的,即直接对应位置元素加权求和,但卷积需要翻转 180 度,故使用 rot90(),逆时针翻转 2 个 90 度,再滤波即为卷积。或者直接指定其滤波类型为卷积,即 imfilter(A,B,'conv'), A 为图像,B 为核。
    • 使用 filter2(rot90(B),A) 实现卷积,A 为图像,B 为核。filter2 是 imfilter2 的单通道形式,即只能处理单通道滤波,故同样先翻转 180 度再做滤波,这里核的位置在前面,需要尤其注意。
    © 版权声明
    文章版权归作者所有,未经允许请勿转载。
  • 相关阅读:
    API连接显示
    zabbix基本介绍
    JMX类型监控
    zabbix sender
    监控项的获取
    zabbix值显示的问题
    windows客户端
    gj的zabbix客户端开机自启动设置
    TCP/UDP
    内置宏
  • 原文地址:https://www.cnblogs.com/gshang/p/14766740.html
Copyright © 2020-2023  润新知