求助Matlab专家帮我看一下我的这个代码点到直线距离怎么编?急急急!
求凹陷最深处到拟合直线距离,前面程序都有,就最后这一步不会编写了,高手们一定帮帮我,悬赏分我把全部的都给了clc;clearall;closeall;I1=imread(...
求凹陷最深处到拟合直线距离,前面程序都有,就最后这一步不会编写了,高手们一定帮帮我,悬赏分我把全部的都给了
clc;
clear all;
close all;
I1=imread('tu1.jpg');%由于图像本身为truecolor图像,所以需要灰度化
if ~ismatrix(I1)
I=rgb2gray(I1);
else
I=I1;
end
figure(1),imshow(I);title('grayscale图')
%%%%提取中心线start%%%%%%%%%%
a=I;
[max_a, index]=max(a); %找出a的格式
b=repmat(max_a,size(a,1),1); %按矩阵a格式复制b矩阵,b矩阵全是最大值
a(a<b)=0; %矩阵a中小于最大值的元素全变为0
figure(2),imshow(a);title('grayscale细化线图')
%%%%%%%提取中心线end%%%%%%%%%%%%
%%%%%%%%%%%hough变换检测直线start%%%%%%%%%%%%ThetaResolution
BW=a;
[H,T,R] = hough(BW,'RhoResolution',1,'ThetaResolution',1);
% display the original image显示原始图像
figure(3),imshow(imadjust(mat2gray(H)),'XData',T,'YData',R,'InitialMagnification','fit');
title('Hough transform of tu1.jpg ');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
colormap(hot);
peaks = houghpeaks(H, 50,'threshold',ceil(0.3*max(H(:))));
lines = houghlines(BW, T, R,peaks);
figure(4),imshow(a);
lines(1).point2(1)=lines(1).point2(1)+315;
hold on
max_len = 0;
for k = 1:length(lines)
% 绘制各条线
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',1,'Color','red');
end
hold off
%%%%%%%%%%%%%%hough变换检测直线end%%%%%%%%%%%%%%%% 展开
clc;
clear all;
close all;
I1=imread('tu1.jpg');%由于图像本身为truecolor图像,所以需要灰度化
if ~ismatrix(I1)
I=rgb2gray(I1);
else
I=I1;
end
figure(1),imshow(I);title('grayscale图')
%%%%提取中心线start%%%%%%%%%%
a=I;
[max_a, index]=max(a); %找出a的格式
b=repmat(max_a,size(a,1),1); %按矩阵a格式复制b矩阵,b矩阵全是最大值
a(a<b)=0; %矩阵a中小于最大值的元素全变为0
figure(2),imshow(a);title('grayscale细化线图')
%%%%%%%提取中心线end%%%%%%%%%%%%
%%%%%%%%%%%hough变换检测直线start%%%%%%%%%%%%ThetaResolution
BW=a;
[H,T,R] = hough(BW,'RhoResolution',1,'ThetaResolution',1);
% display the original image显示原始图像
figure(3),imshow(imadjust(mat2gray(H)),'XData',T,'YData',R,'InitialMagnification','fit');
title('Hough transform of tu1.jpg ');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
colormap(hot);
peaks = houghpeaks(H, 50,'threshold',ceil(0.3*max(H(:))));
lines = houghlines(BW, T, R,peaks);
figure(4),imshow(a);
lines(1).point2(1)=lines(1).point2(1)+315;
hold on
max_len = 0;
for k = 1:length(lines)
% 绘制各条线
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',1,'Color','red');
end
hold off
%%%%%%%%%%%%%%hough变换检测直线end%%%%%%%%%%%%%%%% 展开
展开全部
更多追问追答
追问
谢谢您,我想问下,是不截止到您给我的程序第6行,就已经算出来了最远的距离?
追答
嗯,是的,v/norm([p(1) 1])就是最远距离。你得图片中,最深处到拟合直线距离约5.6个像素。
东莞大凡
2024-08-07 广告
2024-08-07 广告
作为东莞市大凡光学科技有限公司的一员,我们深知Matlab圆点标定板在相机标定中的重要性。该标定板通过均匀分布的圆点,帮助精确计算相机参数,优化成像效果。Matlab强大的编程功能,使得我们能够灵活设计标定板,调整圆点大小、数量和分布,以满...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询