这是我家瑶瑶写的

clear all;close all;clc;
%边缘检测I = imread('5.jpg');
figure;
subplot(1,2,1);
imshow(I);
I1=im2bw(I,0.72);%二值化
subplot(1,2,2);
imshow(edge(I1, 'sobel'));
I2=edge(I1, 'sobel');%边缘检测f1=imread('5.jpg'); %读入要提取的图片
figure;subplot(1,3,1);imshow(f1);
f2=im2bw(f1,0.72);%二值化
f3=im2uint8(f2);
subplot(1,3,2);imshow(f3);
BW=edge (f3,'canny',[0,0.7],0.9);%提取边缘
subplot(1,3,3);imshow(BW);%角点检测
%MatLab角点检测程序harris。
ori_im2=rgb2gray(imread('5.jpg'));
%ori_im2=imresize(ori_im2',0.50,'bicubic');  %加上这句图就变成竖着的了  fx = [5 0 -5;8 0 -8;5 0 -5];          % % la gaucienne,ver axe x
Ix = filter2(fx,ori_im2);              % la convolution vers axe x
fy = [5 8 5;0 0 0;-5 -8 -5];          % la gaucienne,ver axe y
Iy = filter2(fy,ori_im2);              % la convolution vers axe y
Ix2 = Ix.^2;
Iy2 = Iy.^2;
Ixy = Ix.*Iy;
clear Ix;
clear Iy;h= fspecial('gaussian',[5 5],0.7);      % générer une fonction gaussienne,sigma=0.7Ix2 = filter2(h,Ix2);
Iy2 = filter2(h,Iy2);
Ixy = filter2(h,Ixy);height = size(ori_im2,1);
width = size(ori_im2,2);
result = zeros(height,width);         % enregistrer la position du coinR = zeros(height,width);K=0.04;
Rmax = 0;                              % chercher la valeur maximale de R
for i = 1:heightfor j = 1:widthM = [Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];         R(i,j) = det(M)-K*(trace(M))^2;                     % % calcule Rif R(i,j) > RmaxRmax = R(i,j);end;end;
end;cnt = 0;
for i = 2:height-1for j = 2:width-1% réduire des valuers minimales ,la taille de fenetre 3*3if R(i,j) > 0.01*Rmax && R(i,j) > R(i-1,j-1) && R(i,j) > R(i-1,j) && R(i,j) > R(i-1,j+1) && R(i,j) > R(i,j-1) && R(i,j) > R(i,j+1) && R(i,j) > R(i+1,j-1) && R(i,j) > R(i+1,j) && R(i,j) > R(i+1,j+1)result(i,j) = 1;cnt = cnt+1;end;end;
end;[posr2, posc2] = find(result == 1);
cnt                                      % compter des coins
figure
imshow(ori_im2);
hold on;plot(posc2(1),posr2(1),'r*');
plot(posc2(2),posr2(2),'g*');
plot(posc2(3),posr2(3),'b*');
plot(posc2(4),posr2(4),'y*');
%set(gcf,'color','black');disp('[posr2, posc2]');disp([posr2, posc2]);dis1 = sqrt((posc2(1)-posc2(2))^2 + (posr2(1)-posr2(2))^2);%红点和绿点距离
dis2 = sqrt((posc2(2)-posc2(4))^2 + (posr2(2)-posr2(4))^2);%黄点和绿点距离
dis3 = sqrt((posc2(3)-posc2(4))^2 + (posr2(3)-posr2(4))^2);%黄点和蓝点距离
dis4 = sqrt((posc2(1)-posc2(3))^2 + (posr2(1)-posr2(3))^2);%红点和蓝点距离
dis = [dis1,dis2,dis3,dis4];%dot([x1-x2,y1-y2],[x3-x2,y3-y2])为计算内积,norm([x1-x2,y1-y2])为计算向量长度,acosd为计算以度为单位的夹角信息theta1 = acosd(dot([posc2(1)-posc2(2),posr2(1)-posr2(2)],[posc2(4)-posc2(2),posr2(4)-posr2(2)])/(norm([posc2(1)-posc2(2),posr2(1)-posr2(2)])*norm([posc2(4)-posc2(2),posr2(4)-posr2(2)])));%绿点处
theta2 = acosd(dot([posc2(3)-posc2(4),posr2(3)-posr2(4)],[posc2(2)-posc2(4),posr2(2)-posr2(4)])/(norm([posc2(3)-posc2(4),posr2(3)-posr2(4)])*norm([posc2(2)-posc2(4),posr2(2)-posr2(4)])));%黄点处
theta3 = acosd(dot([posc2(1)-posc2(3),posr2(1)-posr2(3)],[posc2(4)-posc2(3),posr2(4)-posr2(3)])/(norm([posc2(1)-posc2(3),posr2(1)-posr2(3)])*norm([posc2(4)-posc2(3),posr2(4)-posr2(3)])));%蓝点处
theta4 = acosd(dot([posc2(2)-posc2(1),posr2(2)-posr2(1)],[posc2(3)-posc2(1),posr2(3)-posr2(1)])/(norm([posc2(2)-posc2(1),posr2(2)-posr2(1)])*norm([posc2(3)-posc2(1),posr2(3)-posr2(1)])));%红点处
theta = [theta1,theta2,theta3,theta4];disp('dis=');disp(dis);
disp('theta=');disp(theta);

引用:

MatLab角点检测(harris经典程序)_浴血重生-学习空间-CSDN博客_harris角点检测matlab

对多边形边缘检测并拟合线段长度和角度(matlab实现)相关推荐

  1. 求解模糊运动角度matlab,动态模糊图像复原MATLAB程序

    <动态模糊图像复原MATLAB程序>由会员分享,可在线阅读,更多相关<动态模糊图像复原MATLAB程序(7页珍藏版)>请在人人文库网上搜索. 1.1. 退化程序clc;clea ...

  2. hough变换连接边缘matlab,边缘检测与Hough变换实验报告 Matlab - 图文

    <边缘检测与Hough变换实验报告 Matlab - 图文>由会员分享,可在线阅读,更多相关<边缘检测与Hough变换实验报告 Matlab - 图文(5页珍藏版)>请在人人文 ...

  3. 图像分割——边缘检测——边缘连接的局部处理(Matlab)

    %Edge linking using local processing clc; clear all; close all; %边缘连接测试图像 I=im2double(imread('D:\Gra ...

  4. matlab矢量角度,MATLAB矢量,角度,图

    我为这个含糊不清的标题道歉,但我并不完全确定如何用这句话来表达.所以忍受我. 我有一个数据矩阵.每列和每行代表某个向量(第1列=第1行,第2列=第2行等),每个单元格值是相应向量之间的余弦相似度.所以 ...

  5. 图像的边缘检测和缺失修复(附matlab代码)

    最近在数学建模过程中老师给了个图片分别在清晰.有噪声及模糊状态下对其进行边缘检测的题目,最后一题是将图片中一部分抠出后将图片按照剩余图片的特征进行修复,整个问题涉及到人工智能及计算机视觉的领域较多,和 ...

  6. matlab中多少角度,MATLAB 计算图像旋转角度

    比如有图像1,将其旋转n度得到图像2,问如何比较两张图像得到旋转的度数n. 算法思路参考logpolar变换: 1.从图像中心位置向四周引出射线. 2.计算每根射线所打到图像上的像素累计和,得到极坐标 ...

  7. matlab中多边形滤波器,几种常见空间滤波器MATLAB实现

    本文链接:https://blog.csdn.net/LYduring/article/details/80443573 一.目的 实现算术均值滤波器.几何均值滤波器.中值滤波器.修正的阿尔法均值滤波 ...

  8. sobel算子实现边缘检测及其c++实现及与matlab效果对比

    这里增加了对边缘像素的补齐.sobel梯度分割抗噪性好,但是无法做到自动阈值,是其一大遗憾,matlab却解决的很好. //默认对8位位图进行处理 void Sobel(unsigned char * ...

  9. 【Matlab 图像】边缘检测算法及效果演示

    [Matlab 图像]边缘检测算法及效果演示 边缘检测 检测图像中的边缘 Matlab 代码 代码效果如下 边缘算法:robert 边缘算法:sobel prewitt 边缘算法:laplacian ...

最新文章

  1. Python,OpenCV应用轮廓逼近算法,检测对象的形状
  2. L1-056 猜数字 (结构体解决)
  3. jsoncpp-src-0.5.0.tar.gz 源码错误!!!!
  4. 坦克大战代码_坦克大战系列文章-坦克大战简介
  5. 花了一个深夜,才用C语言写了一个2048游戏雏形
  6. android monkey优化,GitHub - baozhida/AndroidMonkey: 这个项目是CrashMonkey4Android可执行文件,修复了一些bug,做了一些优化...
  7. Python当前线程休眠1秒钟
  8. 018年,这种员工,开再高的工资都要留住
  9. Xqk.Data数据框架开发指南:丰富的、灵活的查询方法(第一部分)
  10. 数据--第45课 - 最短路径
  11. get方式传递参数问题解决经验
  12. json的各种格式的转换
  13. 奔图打印linux驱动下载,奔图P3405D打印机驱动下载
  14. #今日论文推荐# XAI+网络安全?布兰登大学等最新《可解释人工智能在网络安全应用》综述,33页pdf阐述其现状、挑战、开放问题和未来方向
  15. 开源CRM系统国内有哪些品牌做的好?
  16. C语言编程之计算平均成绩
  17. java epson_无法与Epson POS打印机通信
  18. 临河三中宏志班2021年高考成绩查询,内蒙古巴彦淖尔市临河三中2018-2019高一下学期第二次月考(宏志)生物试卷 Word版含答案.doc...
  19. 创新虎仔音箱试玩报告
  20. 防诈骗安全教育宣传防诈骗知识PPT模板

热门文章

  1. 2020-08-31 2020常用面试题
  2. 小米又发黑科技:四曲面瀑布屏来了,手机全身无孔无按键
  3. 人工智能的5个最佳职业机会
  4. Android常用控件之Button与ImageButton
  5. LabVIEW练习6
  6. android qq弹窗,Android开发比QQ更炫酷的'选项弹窗'动画
  7. 基础总结:计算机网络、操作系统、Java基础、JVM、JUC、SSM框架、数据结构和算法、MySQL、Redis技术栈、Linux常用命令
  8. PCB制板自学(一)_贴片电阻
  9. html图片自动切换的幻灯片效果的,jQuery实现可自动切换的幻灯片效果插件代码...
  10. Tensorflow系列 | Tensorflow从入门到精通(二):附代码实战