目录

前言:

一、Roberts算子

运行结果展示:

二、canny算子

运行结果:

三、对圆与矩阵进行识别

运行结果:



前言:

前几日处理亚太杯A题图像处理,匆忙学习了相关图片边缘处理的一些简单算子处理方法,奈何亚像素处理的水平不够。便就此搁浅,在这里简单分享一些学会的方法。

一、Roberts算子

Roberts算子是一种最简单的算子,利用局部差分算子寻找边缘的算子。采用对角线相邻两像素之差近似梯度幅值检测边缘。。检测垂直边缘的效果比斜向边缘要好,定位精度高,对噪声比较敏感,无法抑制噪声的影响。Roberts边缘算子是一个2x2的模板,采用的是对角方向相邻的两个像素之差。从图像处理的实际效果来看,边缘定位较准,对噪声敏感。

clear;
%清空工作区变量
I = imread('Pic1_1.bmp');
%读取待处理图像文件
subplot(131),imshow(I),title('原图像');
%显示待处理图像文件
image = rgb2gray(I);
%将图片转换成灰度图像
TempImage1 = edge ( image ,'Roberts');
%image 为将要进行边缘检测目标图像,所使用的方法是 Roberts 算子,而阈值则是由系统自适应生成的
subplot(132),imshow(TempImage1),title('Roberts 算子');
%显示 Roberts 自动阈值边缘检测效果图像
TempImage  = edge ( image ,'Roberts',0.07);
% image 为将要进行边缘检测目标图像,所使用的方法是 Roberts 算子,而阈值设置为 0.07
subplot(133),imshow(TempImage),title('Roberts 算子 阈值 0.07');

运行结果展示:

二、canny算子

anny边缘检测算法是比较出色的算法,它包含以下四个步骤:. 高斯滤波. 滤波的主要目的是降噪,一般的图像处理算法都需要先进行降噪。. 而高斯滤波主要使图像变得平滑(模糊),同时也有可能增大了边缘的宽度。. 高斯函数是一个类似与正态分布的中间大两边小的函数。. 对于一个位置(m,n)的像素点,其灰度值(这里只考虑二值图)为f (m,n)。

close all;clear all;clc;
% 提取图像轮廓,提取图像边缘
I = imread('Pic1_1.png');
c = im2bw(I,graythresh(I));
figure;
subplot(131);imshow(I);
c = flipud(c);   %实现矩阵c上下翻转
b = edge(c,'canny');
[u,v] = find(b);   %返回边界矩阵b中非零元素的位置
xp = v;  %行值v赋给xp
yp = u;  %列值u赋给yp
x0 = mean([min(xp),max(xp)]);  %x0为行值的均值
y0 = mean([min(yp),max(yp)]);  %y0为列值得均值
xp1 = xp-x0;
yp1 = yp-y0;
[cita,r] = cart2pol(xp1,yp1);
q = sortrows([cita,r]);  %从r列开始比较数值并按升序排序
cita = q(:,1);  %赋角度值
r = q(:,2);  %赋半径模值
subplot(132);polar(cita,r);  %画极坐标下的轮廓图
[x,y] = pol2cart(cita,r);
x = x+x0;
y = y+y0;
subplot(133);plot(x,y);axis equal;

运行结果:

三、对圆与矩阵进行识别

pic=imread('Pic1_1.bmp');
gray_pic=rgb2gray(pic);
binary_img=1-im2bw(pic,0.73); %灰度图转换成二值图像,直接进行灰度反转,让图形区域置1
for i=202:265binary_img(188,i)=1;
end
fill_hole=imfill(binary_img,'holes');
fill_hole=bwareaopen(fill_hole,10);
[B,L]=bwboundaries(fill_hole,'noholes');
out_result=regionprops(fill_hole,'Extent','Centroid','boundingbox'); %Extent:各连通区域像素点与最小边界像素点比值
centroids = cat(1, out_result.Centroid); %各连通区域质心
draw_rect=cat(1,out_result.BoundingBox); %各连通区域最小边界矩形
figure;
subplot(2,2,1);imshow(pic,[]);title('原图');
subplot(2,2,2);imshow(binary_img,[]);title('二值化');
subplot(2,2,3);imshow(fill_hole,[]);title('区域填充');
subplot(2,2,4);imshow(fill_hole,[]);title('圆和矩形检测');
hold on;
for i=1:size(out_result)rectangle('position',draw_rect(i,:),'EdgeColor','y','LineWidth',2); %绘出各连通区域最小边界矩形if out_result(i).Extent>0.95text(centroids(i,1)-20, centroids(i,2)-10,'矩形','Color','b','FontSize',9);text(centroids(i,1)-32,centroids(i,2)+10,num2str(out_result(i).Extent),'Color','b','FontSize',8);elseout_result(i).Extent>0.76&&out_result(i).Extent<0.80text(centroids(i,1)-20, centroids(i,2)-10,'圆形','Color','b','FontSize',9);text(centroids(i,1)-32, centroids(i,2)+10,num2str(out_result(i).Extent/(pi/4)),'Color','b','FontSize',8);end
end
hold on;
for j=1:length(B)boundary=B{j};plot(boundary(:,2),boundary(:,1),'r','LineWidth',2);
end
hold off;

运行结果:

图像处理边缘处理:Roberts算子和canny算子,对圆与矩阵进行识别相关推荐

  1. 数字图像处理---LOG算子和CANNY算子边缘提取(matlab)

    LOG算子和CANNY算子边缘提取 边缘的含义: 在数字图像中,边缘是指图像局部变化最显著的部分,边缘主要存在于目标与目标,目标与背景之间,是图像局部特性的不连续性,如灰度的突变.纹理结构的突变.颜色 ...

  2. python高斯滤波和降噪_python添加高斯噪声和椒盐噪声,实现中值滤波和均值滤波,实现Roberts算子和Sobel算子...

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验一,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验一. 由于时间紧张,代码没有进行任何优化, ...

  3. 图像的常规边缘检测(梯度算子、Roberts算子和Sobel算子)之c++实现(qt + 不调包)

    1.基本原理 边缘检测一般是利用微分等方法,通过对灰度跃变的分析寻找图像上区域边缘的技术.今天的猪脚是梯度算子和Roberts算子. 1.梯度算子是怎么来的? 答:图像是一个二维集合,在(x, y)处 ...

  4. 边缘检测之Sobel算子和Canny算子

    文章目录 一.Sobel 算子 1.1.什么是 Sobel 算子 1.2.原理 1.3.过程中的问题 1.4.OpenCV 实操 二.Canny 算子 2.1.原理 2.2.OpenCV 实操 三.对 ...

  5. [Python图像处理] 十八.图像锐化与边缘检测之Scharr算子、Canny算子和LOG算子

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  6. Matlab图像边缘检测Roberts\Sobel\Prewitt\Canny算子

    确定图像中的物体边界的一种方法是先检测每个像素和其直接淋雨的状态已决定该像素是否确实处于一个物体的边界上.具有这种特性的像素被标记为边缘点.当图像中各个像素的灰度级用来反映各像素要求的程度时,这种图像 ...

  7. 边缘提取——Prewitt算子和Sobel算子

    目录 Prewitt算子和Sobel算子 理论介绍 编码实现(Python) debug过程 Prewitt算子和Sobel算子 理论介绍 Prewitt算子和Sobel算子也是基于一阶导数的算子. ...

  8. 图像梯度——Sobel算子和Laplacian算子

    一.Sobel算子 1.定义 Sobel算子是一种离散的微分算子,结合了高斯平滑和微分求导运算,利用局部拆分寻找边缘,计算所得的是一个梯度的近似值. Sobel算子=|左-右|/|下-上| Schar ...

  9. python图像锐化 增强边缘_[Python图像处理]十一.图像锐化与边缘检测之Roberts算子、Prewitt算子、Sobel算子和Laplacian算子,Schar算子...

    Roberts算子 Roberts算子即为交叉微分算法,它是基于交叉差分的梯度算法,通过局部差分计算检测边缘线条.常用来处理具有陡峭的第噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更 ...

  10. 图像处理——Canny算子 图像边缘检测:Canny算子、Prewitt算子和sobel算子

    https://blog.csdn.net/fengye2two/article/details/79190759 https://www.jianshu.com/p/bed4ffe996a1

最新文章

  1. 再见了SpringMVC,这个框架有点厉害,甚至干掉了Servlet!
  2. Android 应用 之路 MPAndroidChart~ScatterChart
  3. Lucene——Field.Store(存储域选项)及Field.Index(索引选项)
  4. qq聊天界面 java程序 51cto_Java QQ项目详细设计之:组操作模块
  5. 线性表的定义与操作-顺序表,链式表(C语言)
  6. oralce EM企业管理器
  7. 理工科常用的学习工具
  8. Telerik for AJAX RadGrid控件
  9. php主页备案号底部中间,如何将网站备案号放到网站底部
  10. 打印时总跟出一页计算机主的纸,如何将多页PDF打印在一张纸上
  11. android o系统字体下载,fonts软件安卓下载-fonts字体 安卓版v4.0.0-PC6安卓网
  12. docker网络问题
  13. 菜鸟网管的入门之路-第一章、网络及硬件篇(1)
  14. Ajax 入门Demo
  15. Thunderbird 邮件签名三个实现方式
  16. 资深工程师专业评测--安卓免费的银行卡识别SDK,华为 HMS MLKit 和Card IO哪个好?
  17. JGG | 河北大学杜会龙组综述植物泛基因组学研究
  18. 水利部水利工程造价系统
  19. 【志强课堂】今天聊一聊文案有何作用?
  20. Flink:集群异常问题记录

热门文章

  1. 先锋linux 64位安装包的安装使用
  2. SQL Server 2005 express下载地址
  3. CorelDRAW2022标准专业订阅版下载及功能介绍
  4. 大学高数常微分方程思维导图_思维导图_2016考研数学:高数中六种常见题型归纳_沪江英语...
  5. 怎样关闭vivo的HTML查看器,vivo安全模式在哪儿关闭?
  6. Jetson开发实战记录(二):Jetson Xavier NX版本区别以及烧录系统
  7. python预测比赛_分析5万多场英雄联盟比赛,教你如何轻松用python预测胜负
  8. Matlab GUI编程技巧(四):m文件与simulink之间数据传递
  9. 使用stream给list集合排序
  10. 超全面超详细的Linux学习入门系列教程