%function zernike7(I)
clear;
clc;
I=imread('1.bmp');
if length(size(I))==3 I=rgb2gray(I); end
%I=rgb2gray(I);
%I = edge(I,'canny',0.2);
% I=im2bw(I,0.25);
% I=imnoise(I,'gaussian');
figure(1);imshow(I);
% 7*7Zernike模板
M00=...
[
0 0.0287 0.0686 0.0807 0.0686 0.0287 0
0.0287 0.0815 0.0816 0.0816 0.0816 0.0815 0.0287
0.0686 0.0816 0.0816 0.0816 0.0816 0.0816 0.0686
0.0807 0.0816 0.0816 0.0816 0.0816 0.0816 0.0807
0.0686 0.0816 0.0816 0.0816 0.0816 0.0816 0.0686
0.0287 0.0815 0.0816 0.0816 0.0816 0.0815 0.0287
0 0.0287 0.0686 0.0807 0.0686 0.0287 0
];
M11R=...
[
0 -0.015 -0.019 0 0.019 0.015 0
-0.0224 -0.0466 -0.0233 0 0.0233 0.0466 0.0224
-0.0573 -0.0466 -0.0233 0 0.0233 0.0466 0.0573
-0.069 -0.0466 -0.0233 0 0.0233 0.0466 0.069
-0.0573 -0.0466 -0.0233 0 0.0233 0.0466 0.0573
-0.0224 -0.0466 -0.0233 0 0.0233 0.0466 0.0224
0 -0.015 -0.019 0 0.019 0.015 0
];
M11I=...
[
0 -0.0224 -0.0573 -0.069 -0.0573 -0.0224 0
-0.015 -0.0466 -0.0466 -0.0466 -0.0466 -0.0466 -0.015
-0.019 -0.0233 -0.0233 -0.0233 -0.0233 -0.0233 -0.019
0 0 0 0 0 0 0
0.019 0.0233 0.0233 0.0233 0.0233 0.0233 0.019
0.015 0.0466 0.0466 0.0466 0.0466 0.0466 0.015
0 0.0224 0.0573 0.069 0.0573 0.0224 0
];
M20=...
[
0 0.0225 0.0394 0.0396 0.0394 0.0225 0
0.0225 0.0271 -0.0128 -0.0261 -0.0128 0.0271 0.0225
0.0394 -0.0128 -0.0528 -0.0661 -0.0528 -0.0128 0.0394
0.0396 -0.0261 -0.0661 -0.0794 -0.0661 -0.0261 0.0396
0.0394 -0.0128 -0.0528 -0.0661 -0.0528 -0.0128 0.0394
0.0225 0.0271 -0.0128 -0.0261 -0.0128 0.0271 0.0225
0 0.0225 0.0394 0.0396 0.0394 0.0225 0
];
tic;
K=double(I);
[m n]=size(K);
xs=double(zeros(m,n));
ys=double(zeros(m,n));
%imshow(I);
% 卷积运算
A11I=conv2(M11I,K);
A11R=conv2(M11R,K);
A20=conv2(M20,K);
% 截掉多余部分
A11I=A11I(4:end-3,4:end-3);
A11R=A11R(4:end-3,4:end-3);
A20=A20(4:end-3,4:end-3);
J=zeros(size(K));
boundary=J;
theta=atan2(A11I,A11R);%计算theta
%计算边缘的三个参数
A11C=A11R.*cos(theta)+A11I.*sin(theta);
l=A20./A11C;
k=1.5*A11C./((1-l.^2).^1.5);
e=abs(l)>1/3.5;
k(e)=0;
%边缘判断条件
a=abs(l)<1/2.5*2/7;
b=abs(k)>max(I(:))/6;
% a,b分别为距离和边缘强度判断结果
J(a&b)=1;
%将图像的最边缘去除
% boundary(2:end-1,2:end-1)=1;
% J(~boundary)=0;
format short
[x,y]=find(J==1);%边缘的像素级坐标
O=[x y];
Z=[x+l(find(J==1)).*cos(theta(find(J==1))) y+l(find(J==1)).*sin(theta(find(J==1)))];%亚像素坐标
toc;
% fprintf('%.4f %.4f\n',Z');
figure(2);imshow(J);
% [L,num]=bwlabel(J,8);%对二值图像进行标记
% %自动化搜索连通域
% s=zeros(1,num);
% for i=1:num
% s(i)=size(find(L==i),1);
% end
% [bwL,label]=sort(s,'descend');
zernike.rar_matlab 图像处理_subpixel_zernike_亚像素_边缘检测 zernike
版权申诉
5星 · 超过95%的资源 127 浏览量
2022-07-14
12:19:38
上传
评论
收藏 598KB RAR 举报
钱亚锋
- 粉丝: 86
- 资源: 1万+
最新资源
- 基于matlab开发的根据rvm回归模型自己编的matlab程序.rar
- 高效C++学生成绩管理系统:教育技术+C++17编程+数据管理+教务自动化
- 基于matlab开发的Tipping的相关向量机RVM的回归MATLAB程序,有英文注释,可以运行.rar
- 一个点击正反转程序实例,可实现案件电机正反转
- 搜索链接淘特搜索引擎共享版-tot-search-engine.rar
- 第十八届全国大学生智能汽车竞赛 摄像头组/镜头组
- 基于matlab开发的AUV惯性导航系统matlab仿真程序,包括轨迹生成、gps和sins组合、gps和dvl组合.rar
- 基于SSM的“个性化电子相册”的设计与实现.zip
- 如何在撰写科研文献时,使用ai工具辅助去完成科研工作
- 吉林大学计组笔记 自用 基于b站翼云图灵的课.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论1