网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月13日漏签0天
matlab吧 关注:291,694贴子:1,657,995
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1回复贴,共1页
<<返回matlab吧
>0< 加载中...

求助怎么用MATLAB提取图片水面边界并输出坐标

  • 只看楼主
  • 收藏

  • 回复
  • 霸道小志
  • 抢个沙发
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如题,求大佬指点
一下是代码
% 读取图像
img = imread('云影图片.png');
% 转换为灰度图像
grayImg = rgb2gray(img);
% 尝试不同的阈值
thresholds = [lbk]100, 150, 200[rbk]; % 可根据需要修改这些阈值
for i = 1:length(thresholds)
threshold = thresholds(i);
% 使用阈值分割来提取水面边界线
bwImg = grayImg > threshold;
% 使用边缘检测算法来找到边界线
% 这里使用Canny边缘检测器
edges = edge(bwImg, 'Canny');
% 找到边缘像素的坐标
[lbk]y, x[rbk] = find(edges);
% 显示结果
figure;
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(edges);
hold on;
plot(x, y, 'r.', 'MarkerSize', 1);
title([lbk]'Detected Water Surface Boundary (Threshold = ', num2str(threshold), ')'[rbk]);
hold off;
% 输出边界线坐标
disp([lbk]'Detected boundary coordinates (Threshold = ', num2str(threshold), '):'[rbk]);
for j = 1:length(x)
fprintf('(%d, %d)\n', x(j), y(j));
end
end



  • 霸道小志
  • 抢个沙发
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
也用这个代码修改过阈值范围,试了很多次但是调不出来
% 读取图像
img = imread('云影图片.png');
% 转换为灰度图像
grayImg = rgb2gray(img);
% 设置上下阈值
lower_threshold = 90; % 可根据实际情况调整
upper_threshold = 100; % 可根据实际情况调整
% 使用阈值分割来提取水面边界线
bwImg = (grayImg > lower_threshold) & (grayImg < upper_threshold);
% 使用边缘检测算法来找到边界线
% 这里使用Canny边缘检测器
edges = edge(bwImg, 'Canny');
% 找到边缘像素的坐标
[y, x] = find(edges);
% 显示结果
figure;
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(edges);
hold on;
plot(x, y, 'r.', 'MarkerSize', 1);
title(['Detected Water Surface Boundary (Threshold Range: ', num2str(lower_threshold), '-', num2str(upper_threshold), ')']);
hold off;
% 输出边界线坐标
disp(['Detected boundary coordinates (Threshold Range: ', num2str(lower_threshold), '-', num2str(upper_threshold), '):']);
for i = 1:length(x)
fprintf('(%d, %d)\n', x(i), y(i));
end


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回matlab吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示