Radon变换实现对图像倾斜校正 matlab

Radon变换实现对图像倾斜校正

参考博客

https://blog.csdn.net/akzc42847/article/details/102357885

建议先看上面链接参考博客。

radon原理
radon变换是一种倾斜坐标轴,计算不同角度的坐标轴下的线积分,当线积分有突变时,则认为存在直线。

如下图,是灰底画面中有一条黑色线段。
1.在红色坐标系中,沿x1轴方向进行积分,红色粗线是积分结果,可以看出,在x轴上某一点存在积分值激增。
2.在蓝色坐标系中,沿着x2轴方向进行积分,蓝色粗线是积分结果,可以看出,x轴上的积分结果相对平缓。

通过这样不断旋转坐标轴,可以确定黑线的倾斜角度。
在这里插入图片描述

计算步骤

  1. 读取图片
  2. 将彩色图像转换为灰度图像
  3. 对图像进行边缘检测(sobel、canny、laplace算子等)
  4. radon变换,角度检测
  5. 确定直线角度,并对原图进行旋转

结果展示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

clc;close all;

fileName='D:\LCD_Data\7_left.bmp';
srcImage=imread(fileName);
grayImage=rgb2gray(srcImage);
cannyImage=edge(grayImage,'canny');
figure(1);
subplot(121);imshow(srcImage);title('Orignal img');
% figure();;imshow(cannyImage);title('canny算子求边缘');

theta=0:180;
[R,x]=radon(cannyImage,theta);
figure;
imagesc(theta,x,R); %将矩阵值展示成图。imagesc(x,y,C) 指定图像位置。使用 x 和 y 可指定与 C(1,1) 和 C(m,n) 对应的边角的位置。要同时指定两个边角,请将 x 和 y 设置为二元素向量。要指定第一个边角并让 imagesc 确定另一个,请将 x 和 y 设为标量值。图像将根据需要进行拉伸和定向。
title('热力图  theta-X'); 
xlabel('theta(degree)'); 
ylabel('X\prime'); 
colormap(hot);  %以热力图方式展示
colorbar;%图例


[x,y]=find(R==max(max(R)))%x:截距 y:坐标轴与水平方向的夹角
rot_I=imrotate(srcImage,180-y,'loose'); %旋转图像
figure(1);subplot(122);imshow(rot_I);title('Radon变换');

  • 1
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值