智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5311|回复: 26
打印 上一主题 下一主题

图像矫正后,边缘锯齿严重,有什么办法吗?

[复制链接]

16

主题

132

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1389
威望
677
贡献
392
兑换币
425
注册时间
2015-7-31
在线时间
160 小时
毕业学校
还没毕业
跳转到指定楼层
1#
发表于 2016-2-13 14:35:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
边缘锯齿很严重,对边缘和中线提取有影响,有什么数学办法可以解决的吗?各位

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
771
威望
383
贡献
236
兑换币
258
注册时间
2015-5-28
在线时间
76 小时
毕业学校
武汉纺织大学
27#
发表于 2016-5-7 14:35:46 | 只看该作者
哈哈某人用菊花 发表于 2016-5-7 12:24
GRAY1=imread('2.png');
GRAY=rgb2gray(GRAY1);
X1=imresize(GRAY,[row col]);

CAV=255;这是什么?[row col]式摄像头的分辨率吗?

a=2;b=3.5;c=-512;d=-0;e=0.09;f=-0;g=12.0;h=-277.18;这个不是摄像头标定得到的吗?你是怎么得到的?
row2,col2是什么?
X_Bor(i,j);这个函数是干什么的,函数原型在哪?
:(:(
回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
771
威望
383
贡献
236
兑换币
258
注册时间
2015-5-28
在线时间
76 小时
毕业学校
武汉纺织大学
26#
发表于 2016-5-7 12:47:45 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
771
威望
383
贡献
236
兑换币
258
注册时间
2015-5-28
在线时间
76 小时
毕业学校
武汉纺织大学
25#
发表于 2016-5-7 12:46:38 | 只看该作者
哈哈某人用菊花 发表于 2016-5-7 12:24
GRAY1=imread('2.png');
GRAY=rgb2gray(GRAY1);
X1=imresize(GRAY,[row col]);

谢了哈
回复 支持 反对

使用道具 举报

16

主题

132

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1389
威望
677
贡献
392
兑换币
425
注册时间
2015-7-31
在线时间
160 小时
毕业学校
还没毕业
24#
 楼主| 发表于 2016-5-7 12:24:45 | 只看该作者
cuteboy 发表于 2016-5-7 11:00
没关系,我自己慢慢看,我已经弄了一个多星期了,实在是没头绪了,这马上要比赛了,我想换这个方案看能不 ...

GRAY1=imread('2.png');
GRAY=rgb2gray(GRAY1);
X1=imresize(GRAY,[row col]);
X_Ori=int16(imresize(GRAY,[row col]));
CAV=255;
for  i=1:row%y
    for j=1:col%x
        if X_Ori(i,j)<CAV;
          CAV=X_Ori(i,j);
        end
     end
end
CAV=100+CAV;
for  i=1:row%y
    for j=1:col%x
        if X_Ori(i,j)<CAV;
          X_Ori(i,j)=0;
        else  X_Ori(i,j)=255;
        end
     end
end
a=2;b=3.5;c=-512;d=-0;e=0.09;f=-0;g=12.0;h=-277.18;
for  i=1:row%y
    for j=1:col%x
        j2=(a*j+b*i+c)/(d*j+e*i+1);
        i2=(f*j+g*i+h)/(d*j+e*i+1);
       intj2=fix(j2);
       if intj2<=0||intj2>col2
           continue;
       end
       if intj2>col2
           intj2=col2
       end
       inti2=fix(i2);
       if inti2<=0||inti2>row2
            continue;
        end
        if inti2>row2
            inti2=row2;
        end
         X_Tran(inti2,intj2)=X_Bor(i,j);
    end
end
   subplot(2,2,1);
imshow(uint8(X_Ori));
   subplot(2,2,2);
imshow(uint8(X_Tran));

核心算法

回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
771
威望
383
贡献
236
兑换币
258
注册时间
2015-5-28
在线时间
76 小时
毕业学校
武汉纺织大学
23#
发表于 2016-5-7 11:00:21 | 只看该作者
哈哈某人用菊花 发表于 2016-5-7 09:38
我程序太乱,还得花很多时间解释,就不发了。你这个明显是图像有问题,你慢慢来啊先能显示正确的图像再说 ...

没关系,我自己慢慢看,我已经弄了一个多星期了,实在是没头绪了,这马上要比赛了,我想换这个方案看能不能提一下速的,拜托,么么哒
回复 支持 反对

使用道具 举报

16

主题

132

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1389
威望
677
贡献
392
兑换币
425
注册时间
2015-7-31
在线时间
160 小时
毕业学校
还没毕业
22#
 楼主| 发表于 2016-5-7 09:38:08 | 只看该作者
cuteboy 发表于 2016-5-6 16:26
这是我按照你的那种方法做的,怎么得到的图像是这样的呀,你是怎么做的,能不能把matlab程序给我看看呀
...

我程序太乱,还得花很多时间解释,就不发了。你这个明显是图像有问题,你慢慢来啊先能显示正确的图像再说,你可以单步调试,看那些矩阵(也就是二维数组)里面的数据是不是跟你的灰度值一一对应。如果不对应,可能是RGB格式还没有转化到灰度值。还有一个问题就是可能你的行列数值没设置对。还有可能就是你的图像被matlab缩小了,尝试放大下图像。问题是可以自己调试出来了。不要动不动就要代码,除非万不得已。
回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
771
威望
383
贡献
236
兑换币
258
注册时间
2015-5-28
在线时间
76 小时
毕业学校
武汉纺织大学
21#
发表于 2016-5-6 16:26:23 | 只看该作者
哈哈某人用菊花 发表于 2016-5-6 09:24
GRAY1=imread('2.png');//读取图片,好像是RGB格式吧
GRAY=rgb2gray(GRAY1);//应该是转化成灰度值吧,
...

这是我按照你的那种方法做的,怎么得到的图像是这样的呀,你是怎么做的,能不能把matlab程序给我看看呀


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

16

主题

132

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1389
威望
677
贡献
392
兑换币
425
注册时间
2015-7-31
在线时间
160 小时
毕业学校
还没毕业
20#
 楼主| 发表于 2016-5-6 09:24:38 | 只看该作者
cuteboy 发表于 2016-5-5 22:58
大神,请问您是用什么标定的,是matlab标定的吗?具体过程是怎么样的,能否给我参考一下:hands ...

GRAY1=imread('2.png');//读取图片,好像是RGB格式吧
GRAY=rgb2gray(GRAY1);//应该是转化成灰度值吧,
X1=imresize(GRAY,[row col]);//忘记了
然后X1就是分辨率=ROW*COL的灰度图像,然后你就用这个带坐标的图像去标定,其实就是看你变换之后图像是怎样的,
for  i=1:row%y
    for j=1:col%x
        if X_Ori(i,j)<155;
          X_Ori(i,j)=0;
        else  X_Ori(i,j)=255;
        end
     end
end
比如这个语句是二值化语句
        j2=(a*j+b*i+c)/(d*j+e*i+1);
        i2=(f*j+g*i+h)/(d*j+e*i+1);这个公式就是畸变矫正公式,八个系数自己标定参数,然后自己解,
其实matlab 的作用就是让我可以处理图像,像在单片机里面处理二维数组一样,然后可以显示图像,还可以单步仿真,看看变换的图像,变换的点有没有问题,有问题的话,是我参数不对还是我的公式不对,还是我的算法写得不对。大概就这些作用吧。
我应该不是再说标定的事情了吧?上次都跟你说了。就去变换之前四个点,变换之后四个点,然后列方程,然后解出八个系数而已。

回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
771
威望
383
贡献
236
兑换币
258
注册时间
2015-5-28
在线时间
76 小时
毕业学校
武汉纺织大学
19#
发表于 2016-5-5 22:58:31 | 只看该作者
哈哈某人用菊花 发表于 2016-5-4 23:06
你不用工具很难标定的,除非你能确定你理解的东西,做的东西全是对的,不然你就得通过matlab或者opencv这 ...

大神,请问您是用什么标定的,是matlab标定的吗?具体过程是怎么样的,能否给我参考一下:handshake:handshake
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-2 14:32 , Processed in 0.054710 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表