利用各种梯度算子,Roberts,Sobel,Canny等算子对灰度图像计算梯度,然后对梯度图像进行性能评价,有很多指标,本博客主要介绍一下MSE,PSNR,FOM的实现,具体原理就不解释了,直接放代码吧

一丶计算MSE和PSNR

Compute_MSE_PSNR.m

function [PSNR, MSE] = Compute_MSE_PSNR(Ref_img, goal_img)%输入图像为参考图像和要计算MSE和PSNR的图像,输出为PSNR和MSE
Ref_img=double(Ref_img);
goal_img=double(goal_img);
if nargin<2Ref_img=goal_img;
elseif any(size(Ref_img)~=size(goal_img))%判断两个图像的大小是否相同error('The input size is not equal to each other!');%如果不同 报错“俩图像大小不同”endimg_diff = Ref_img-goal_img;%两个图像转换为double类型做差分,相减
end
%
MSE=sum(img_diff(:).^2)/numel(goal_img);%numel函数结果即为图像长*宽  也就是像素总数
PSNR=10*log10(255^2/MSE);

二丶计算FOM

ComputeFOM.m

FOM的原理可参考这篇论文,下载链接:

https://download.csdn.net/my

function fom = ComputeFOM(Ref_img,goal_img)
a=1/9;%公式中比例常数
edgeNum_Ref=length(find(Ref_img));%理想图像或者参考图像的边缘点数量
edgeNum_goal=length(find(goal_img));%目标图像的边缘点数量MaxEdgeNum=max(edgeNum_Ref,edgeNum_goal);%计算两图像中边缘点数量多的图像的数量[row_Ref,col_Ref]=find(Ref_img);%获取图像中不为0的点的坐标,也就是边缘点的坐标
[row_goal,col_goal]=find(goal_img);rowNum_Ref=size(Ref_img,1);%参考图像的行和列的数量
colNum_Ref=size(Ref_img,2);d=sqrt(rowNum_Ref^2+colNum_Ref^2)*ones(1,length(find(Ref_img)));%图像的对角线像素数*(1,参考图像边缘点的数量)大小的全为1的矩阵,结果应该是值全为对角线值
dd=zeros(1,length(find(goal_img)));%创建一个(1,目标图像边缘点数量)大小的全为1的矩阵for i=1:length(find(goal_img))for j=1:length(find(Ref_img))d(j)=(row_goal(i)-row_Ref(j))^2+(col_goal(i)-col_Ref(j))^2;%理想边缘点最近欧式距离d的平方值即为所求enddd(i)=min(d);
end
fom = sum(9./(9+dd))/MaxEdgeNum;

边缘检测算子性能评价Matlab实现之——MSE,PSNR,FOM(品质因数)相关推荐

  1. Roberts、Prewitt、Sobel、Laplacian、LoG 和 Canny 边缘检测算子(MATLAB自写函数实现)

    文章目录 Roberts.Prewitt.Sobel.Laplacian.LoG 和 Canny 边缘检测算子(MATLAB自写函数实现) 1理论 1.1 知识引入 1.1.1 图像边缘边缘[1] 1 ...

  2. 图像边缘检测经典算子及MATLAB实现

    一.边缘检测 边缘是图象最基本的特征. 边缘检测在计算机视觉.图象分析等应用中起着重要的作用,是图象分析与识别的重要环节,这是因为子图象的边缘包含了用于识别的有用信息. 所以边缘检测是图像分析和模式识 ...

  3. 小波变换 边缘检测 matlab,边缘检测算子和小波变换提取图像边缘【matlab】

    Roberts边缘检测算子:根据一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差. 小波变换的方法比较适用于展现夹带在正常信号中的瞬间反常现象,具有方向敏感性.所以可以边缘检 ...

  4. matlab中中图像PSNR和SSIM的计算

    图像处理结果的度量 -- SNR.PSNR.SSIM 网上找了很多关于PSNR和SSIM的计算,很多结果算出来都不一样,公式都是普遍的,如下: 现在总结下造成结果差异的原因. PSNR的差异: 1.灰 ...

  5. 图像处理:边缘提取算法(边缘提取算子总结)——Matlab代码实现

    边缘提取算子 一阶:  Roberts算子.Sobel算子.Prewitt算子.Kirsch算子.Robinson算子 二阶: Laplacian算子.Canny算子.Marr-Hildreth(Lo ...

  6. python 视觉技术_python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)...

    机器视觉是人工智能正在快速发展的一个分支.简单说来,机器视觉就是用机器代替人眼来做测量和判断.它是一项综合技术,包括图像处理.机械工程技术.控制.电光源照明.光学成像.传感器.模拟与数字视频技术.计算 ...

  7. matlab的边缘检测方法,常用图像边缘检测方法及Matlab研究

    2011 年 2 月 15 日第 34 卷第 4 期 现代电子技术 Modern Electronics Technique Feb. 2011 Vol. 34 No. 4 常用图像边缘检测方法及 M ...

  8. 【边缘检测】基于matlab八方向sobel图像边缘检测【含Matlab源码 1865期】

    ⛄一.八方向Sobel算子的边缘检测算法简介 1 引言 随着数字图像的广泛应用, 对图像精度的要求也逐步提高.边缘是目标图像与背景图像的分界, 是图像最基本的特征之一.图像边缘蕴含了图像丰富的内在信息 ...

  9. matlab中psnr多了50,matlab中中图像PSNR和SSIM的计算

    网上找了很多关于PSNR和SSIM的计算,很多结果算出来都不一样,公式都是普遍的,如下: 现在总结下造成结果差异的原因. PSNR的差异:1.灰度图像:灰度图像比较好计算只有一个值. 2.彩色图像:a ...

最新文章

  1. 一次失败的面试,复习一次一致性哈希算法
  2. 使用极光推送实现分组发送和服务端集成
  3. web在线聊天系统。非ajax轮询
  4. jQuery调用WCF需要注意的一些问题
  5. SAP BSP同本地硬件的集成
  6. 数据库数据类型、常见约束、系统结构的基本知识总结(SQL、DML、DQL、DCL、DTL)
  7. iconfont矢量 在已经有的情况下新增图标
  8. 华为NP课程笔记24-BFD
  9. 慕课 springmvc 起步 maven wbe
  10. Java面试题----基础
  11. 风筝 vpn_风筝将其AI驱动的代码完成功能引入JavaScript
  12. 【windows7 bluescreen蓝屏的解决方法】
  13. openGL之API学习(七十)windows的opengl扩展wgl
  14. Ubuntu下输入金钱符号时只能输入“₵“无法输入“$“
  15. Android studio 百度地图SDK之地图定位与运动轨迹绘制
  16. 创建多媒体APP 之 音频播放:管理音频焦点
  17. 通过2-3-4树理解红黑树
  18. mysql判断叠字_格律诗的八大语法特点
  19. WPF学习(12)动画
  20. 如何配置linux服务器

热门文章

  1. 经典】供方该如何开展批次管理?全面
  2. (蒼ざめた月の光)苍青色的月光(moonlight)Ture End--真正结局(大团圆结局)攻略心得
  3. 灵魂拷问!2021年Java常见面试题
  4. 英文pdf复制到谷歌翻译格式问题
  5. 华为海思AI芯片HI3516DV300上SSD代码的移植和优化
  6. JS实现用键盘上下左右键移动页面的div进行移动,并且不能移出页面
  7. 第二章线性时间序列分析及应用(理论)
  8. 微信小程序-QQ音乐
  9. 2005年4月24日
  10. SVN基本概念、使用及Idea的应用