Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17 ![]() |
![]()
图片是一个特殊广角照相机照的环形天空,我需要做的任务就是确定中心,并画出80°、70°、60°。。。等位线,图像的边缘代表15°。
我是一个初学者,还没入门,想请教诸位大侠 ![]() 1.读入图像后,由于两边有黑色区域,怎么才能确定圆心呢? 2.怎么才能测出图像中这个圆的半径呢?直接利用size的话出来的是连着黑色区域一起的长度,怎么才能只测圆形区域的大小呢? 3.确定圆心和半径后,用什么命令才能把画出的线留在图像上呢?我利用hold on命令可以把画出的线留在图上,可是怎么用imwrite输出成一个新的图像呢? ![]() |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17 ![]() |
![]()
希望大家不吝赐教。。。随便三言两语也可以。。。不一定要全部都回答。。。
真的,跪谢大家了。。。 |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-12-12
年龄: 51
帖子: 14
声望力: 17 ![]() |
![]() |
![]() |
![]() |
![]() |
#4 | |
初级会员
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17 ![]() |
![]() 引用:
|
|
![]() |
![]() |
![]() |
#5 |
高级会员
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26 ![]() |
![]()
lz 我想针对这三个问题
1 确定圆心,提供3种方法或者思路: a.通过任取圆上三个点,连接组成一个内接三角形,然后计算三条边的中垂线的交点,这是几何的方法,当然,这要求你的三个点的选取要精确,当然,可以通过多次测量取平均值甚至是聚类来做,直接取平均值就可以了,聚类有点过了,相信,确定圆心对你来讲是基础,但是不能复杂度太高不是么?原理图解释在这里,你可以看一下。 b.取出圆的轮廓,即亦同时将图中二值化,任取圆上两点,分别寻找与此两点欧氏距离最远的两个点,可使用穷举法,因为无非是圆上循环一周嘛,只要什么时候,距离开始减小,最远点就找到了,连接形成对应的直径,交点就是圆心; c.Hough变换,我想这个可能对于你来说也是可能便于后面的处理,你这里的广角图像其实可以理解为在极坐标下表示不是么?我们都知道Hough变换可以检测直线,它可以用来检测圆的,圆心也就在情理之中了,反用hough变换是一个inverse problem,但是可以解决,而且国内也有人把这个发了paper, 原理非常简单,你可以查一下数据库,比较经典的就是检测那张coin的图像。由于有一部分圆的边界你看不到,肯定要有些technical change。Anyway,this is a routine. |
![]() |
![]() |
![]() |
#6 |
高级会员
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26 ![]() |
![]()
2 1如果你可以解决 2不是问题不是么?
3 你可以这样考虑这个问题,不是加线在图像上,而是画线,即将那些在等位线上的点的像素值改为你想要的等位线的颜色,比如说黑色,灰度图里就是255;还有一种就是叠加,即你在一副新的与该照片一样大小的图像上画好等位线(前提当然是已经解决1和2的情况下,即已经确定好圆心),然后叠加在当前图像上,需要注意的就是,数组值的溢出。 Thx for reading. PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。 |
![]() |
![]() |
![]() |
#7 |
初级会员
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17 ![]() |
![]()
谢谢,太感谢了!给我提供了这么多的思路!
关于第三条,我之前也思考过,当我确定圆心后,我把与圆心坐标的欧氏距离等于我需要的r值的点都画成我需要的颜色,但是我觉得点和点的欧氏距离算出来的是一个近似值,肯定不能恰恰等于我所需要的r。举个例子,比如我算出的r=9.1,圆心是[0,0],那[0,9]这个点可以被标注下来吗?主要可能是我对于Matlab的算法还是不是很清楚。。。 关于叠加的方法,我试验了一下,简单的A+B出来的图形变了颜色,我不知道是不是需要进行某些转换,而且好像不仅仅是简单的叠加,也可以说是覆盖。。。 还是太感谢大侠了! |
![]() |
![]() |
![]() |
#8 |
初级会员
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17 ![]() |
![]()
关于确定圆心,我刚才也想了种方法,咱们交流一下,你看看是否能行。
我想的是利用黑色区域,因为黑色的[i,j,:]=0,所以用穷举算出左侧和右侧的端点。。。 不过感觉工作量还是很大的,不如提取圆形边缘省事儿,我再查一下提取圆形边缘的方法吧,起码有了思路,太感谢了。。。 |
![]() |
![]() |
![]() |
#9 |
高级会员
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26 ![]() |
![]()
nice problem, I think.
第一段 因为是离散图像 这个是难免的,因为总是要取整的,在图像旋转时和图形学上,这是一个很有趣的研究方向。除非图像interpolation,否则是有更好,没有最好。(广告词用一下, 澳柯玛~) 第二段 我的意思你可能已经基本明白了 不过 没有注意我的提醒哦 数组值 即 灰度值的范围 你这样相加 可是有越界的危险 越界后当然0开始 可以说求了一个255的补 当然颜色变掉了 越界了 大于255了怎么办 那么就在代码中加入 判断语句 if >255 =255 end if 或者向你所说 也是我的前一个说法 用另外一种颜色 即灰度值 覆盖就可以了 Thx for reading. PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。 |
![]() |
![]() |
![]() |
#10 |
初级会员
注册日期: 2009-02-21
年龄: 45
帖子: 10
声望力: 17 ![]() |
![]() |
![]() |
![]() |