radon变换就是图像在不同方向上的投影。
下图f(x,y)可以代表图像,R(x\')就是图像向右下方的投影。
数学上是按投影方向进行线积分,在图像领域就是按照投影方向累加像素就行了。
matlab中有radon函数,为了熟悉原理我又写了一个。
通过旋转图像映射,效率不怎么样。
canny后Lena:
45度投影:
代码如下:
main.m
1 clear all; close all; clc;
2
3 img=imread(\'lena.jpg\');
4 ed=edge(img,\'canny\');
5
6 r=Radon(ed,45); %检测直线什么的,可以投影到0-179度上
7 %r=radon(ed,45); %系统自带
8
9 figure;
10 plot(r)
Radon.m
1 function re=Radon(img,rotate)
2
3 img=imrotate(img,rotate); %没什么效率,实际中旋转投影方向比较好
4
5 re=sum(img); %已旋转后的图像按列求和
6
7 end