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