Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-03-17, 20:07   #1
bjpu
初级会员
 
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17
bjpu 正向着好的方向发展
问题 [求助]确定图像的中心并画几个同心圆

图片是一个特殊广角照相机照的环形天空,我需要做的任务就是确定中心,并画出80°、70°、60°。。。等位线,图像的边缘代表15°。

我是一个初学者,还没入门,想请教诸位大侠
1.读入图像后,由于两边有黑色区域,怎么才能确定圆心呢?
2.怎么才能测出图像中这个圆的半径呢?直接利用size的话出来的是连着黑色区域一起的长度,怎么才能只测圆形区域的大小呢?
3.确定圆心和半径后,用什么命令才能把画出的线留在图像上呢?我利用hold on命令可以把画出的线留在图上,可是怎么用imwrite输出成一个新的图像呢?


bjpu 当前离线   回复时引用此帖
旧 2009-03-17, 21:08   #2
bjpu
初级会员
 
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17
bjpu 正向着好的方向发展
默认 回复: [求助]确定图像的中心并画几个同心圆

希望大家不吝赐教。。。随便三言两语也可以。。。不一定要全部都回答。。。

真的,跪谢大家了。。。
bjpu 当前离线   回复时引用此帖
旧 2009-03-17, 22:40   #3
webzhou
初级会员
 
注册日期: 2008-12-12
年龄: 51
帖子: 14
声望力: 17
webzhou 正向着好的方向发展
默认 回复: [求助]确定图像的中心并画几个同心圆

去这里找找http://image.edu.topzj.com/index.php
webzhou 当前离线   回复时引用此帖
旧 2009-03-18, 00:35   #4
bjpu
初级会员
 
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17
bjpu 正向着好的方向发展
默认 回复: [求助]确定图像的中心并画几个同心圆

引用:
作者: webzhou 查看帖子
谢谢,我去看了,但是没太找到合适的东西。。。不过还是谢谢。。。
bjpu 当前离线   回复时引用此帖
旧 2009-03-18, 05:23   #5
silas_xue
高级会员
 
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26
silas_xue 是一个将要出名的人
默认 回复: [求助]确定图像的中心并画几个同心圆

lz 我想针对这三个问题
1 确定圆心,提供3种方法或者思路:
a.通过任取圆上三个点,连接组成一个内接三角形,然后计算三条边的中垂线的交点,这是几何的方法,当然,这要求你的三个点的选取要精确,当然,可以通过多次测量取平均值甚至是聚类来做,直接取平均值就可以了,聚类有点过了,相信,确定圆心对你来讲是基础,但是不能复杂度太高不是么?原理图解释在这里,你可以看一下。
b.取出圆的轮廓,即亦同时将图中二值化,任取圆上两点,分别寻找与此两点欧氏距离最远的两个点,可使用穷举法,因为无非是圆上循环一周嘛,只要什么时候,距离开始减小,最远点就找到了,连接形成对应的直径,交点就是圆心;
c.Hough变换,我想这个可能对于你来说也是可能便于后面的处理,你这里的广角图像其实可以理解为在极坐标下表示不是么?我们都知道Hough变换可以检测直线,它可以用来检测圆的,圆心也就在情理之中了,反用hough变换是一个inverse problem,但是可以解决,而且国内也有人把这个发了paper, 原理非常简单,你可以查一下数据库,比较经典的就是检测那张coin的图像。由于有一部分圆的边界你看不到,肯定要有些technical change。Anyway,this is a routine.
上传的图像
文件类型: jpg 圆心_Geometry.JPG (5.6 KB, 3 次查看)
silas_xue 当前离线   回复时引用此帖
旧 2009-03-18, 05:31   #6
silas_xue
高级会员
 
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26
silas_xue 是一个将要出名的人
默认 回复: [求助]确定图像的中心并画几个同心圆

2 1如果你可以解决 2不是问题不是么?
3 你可以这样考虑这个问题,不是加线在图像上,而是画线,即将那些在等位线上的点的像素值改为你想要的等位线的颜色,比如说黑色,灰度图里就是255;还有一种就是叠加,即你在一副新的与该照片一样大小的图像上画好等位线(前提当然是已经解决1和2的情况下,即已经确定好圆心),然后叠加在当前图像上,需要注意的就是,数组值的溢出。

Thx for reading.
PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。
silas_xue 当前离线   回复时引用此帖
旧 2009-03-18, 06:48   #7
bjpu
初级会员
 
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17
bjpu 正向着好的方向发展
默认 回复: [求助]确定图像的中心并画几个同心圆

谢谢,太感谢了!给我提供了这么多的思路!

关于第三条,我之前也思考过,当我确定圆心后,我把与圆心坐标的欧氏距离等于我需要的r值的点都画成我需要的颜色,但是我觉得点和点的欧氏距离算出来的是一个近似值,肯定不能恰恰等于我所需要的r。举个例子,比如我算出的r=9.1,圆心是[0,0],那[0,9]这个点可以被标注下来吗?主要可能是我对于Matlab的算法还是不是很清楚。。。

关于叠加的方法,我试验了一下,简单的A+B出来的图形变了颜色,我不知道是不是需要进行某些转换,而且好像不仅仅是简单的叠加,也可以说是覆盖。。。

还是太感谢大侠了!
bjpu 当前离线   回复时引用此帖
旧 2009-03-18, 07:00   #8
bjpu
初级会员
 
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17
bjpu 正向着好的方向发展
默认 回复: [求助]确定图像的中心并画几个同心圆

关于确定圆心,我刚才也想了种方法,咱们交流一下,你看看是否能行。

我想的是利用黑色区域,因为黑色的[i,j,:]=0,所以用穷举算出左侧和右侧的端点。。。

不过感觉工作量还是很大的,不如提取圆形边缘省事儿,我再查一下提取圆形边缘的方法吧,起码有了思路,太感谢了。。。
bjpu 当前离线   回复时引用此帖
旧 2009-03-18, 07:02   #9
silas_xue
高级会员
 
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26
silas_xue 是一个将要出名的人
默认 回复: [求助]确定图像的中心并画几个同心圆

nice problem, I think.

第一段 因为是离散图像 这个是难免的,因为总是要取整的,在图像旋转时和图形学上,这是一个很有趣的研究方向。除非图像interpolation,否则是有更好,没有最好。(广告词用一下, 澳柯玛~)

第二段 我的意思你可能已经基本明白了 不过 没有注意我的提醒哦 数组值 即 灰度值的范围 你这样相加 可是有越界的危险 越界后当然0开始 可以说求了一个255的补 当然颜色变掉了 越界了 大于255了怎么办 那么就在代码中加入 判断语句
if >255
=255
end if
或者向你所说 也是我的前一个说法 用另外一种颜色 即灰度值 覆盖就可以了

Thx for reading.
PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。
silas_xue 当前离线   回复时引用此帖
旧 2009-03-19, 01:23   #10
bjpu
初级会员
 
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17
bjpu 正向着好的方向发展
默认 回复: [求助]确定图像的中心并画几个同心圆

引用:
作者: silas_xue 查看帖子
lz 我想针对这三个问题
1 确定圆心,提供3种方法或者思路:
a.通过任取圆上三个点,连接组成一个内接三角形,然后计算三条边的中垂线的交点,这是几何的方法,当然,这要求你的三个点的选取要精确,当然,可以通过多次测量取平均值甚至是聚类来做,直接取平均值就可以了,聚类有点过了,相信,确定圆心对你来...
能不能再跟我仔细说说怎么才能提取圆的轮廓。。。
我试着提取轮廓,出来的是所有的,而且不知道怎么选取圆的轮廓上的点,我用穷举检测,发现背景上有很多噪点,影响我检测的结果,总也不能自动取到圆上的点。。。
bjpu 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 20:56


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.