图像识别1-Radon变换学习-MATLAB得到热力图

1. fitsread

  • 感觉是联网/自带的图片,我甚至没有保存original image程序也可以自动读取/处理图片
I = fitsread('solarspectra.fts');
I = rescale(I);
 
figure
imshow(I)
title('Original Image')
BW = edge(I);
figure
imshow(BW)
title('Edges of Original Image')
theta = 0:179;
[R,xp] = radon(BW,theta);
 
figure
imagesc(theta, xp, R); colormap(hot);
xlabel('\theta (degrees)');
ylabel('x^{\prime} (pixels from center)');
title('R_{\theta} (x^{\prime})');
colorbar

图像识别1-Radon变换学习-MATLAB得到热力图_第1张图片

电脑本地没有这张照片也可以得到下面的照片

图像识别1-Radon变换学习-MATLAB得到热力图_第2张图片 图像识别1-Radon变换学习-MATLAB得到热力图_第3张图片

图像识别1-Radon变换学习-MATLAB得到热力图_第4张图片

得到热力图


2. imread

%% Radon Transform
function RadonTest()

srcImage=imread('radon2.bmp');#原代码:[fileName=input('Input image file name:');srcImage=imread(fileName);]  
grayImage=rgb2gray(srcImage);
cannyImage=edge(grayImage,'canny');

theta=0:180;
[R,x]=radon(cannyImage,theta);
figure,imagesc(theta,x,R); 
title('R_theta X'); 
xlabel('theta(degree)'); 
ylabel('X\prime'); 
colormap(hot);  
colorbar;

end

对图中直线段进行radon变换:

图像识别1-Radon变换学习-MATLAB得到热力图_第5张图片

原图

图像识别1-Radon变换学习-MATLAB得到热力图_第6张图片

热力图
  • 开始报错“MATLAB处理图像时出错:错误使用 rgb2gray>parse_inputs (line 80)MAP 必须为 m x 3 的数组。”
  • 错误原因:读入图像不是GRB三通道的
  • 解决办法:修改为24位位图便可
  • 右击打开方式,利用画图软件打开,另存为24位图

图像识别1-Radon变换学习-MATLAB得到热力图_第7张图片

  • radon变换是一种原始灰度图像到(p,o)二维矩阵的映射,映射关系是灰度图像的像素值对参数(p,o)的直线的线积分,或者叫投影,可理解为垂直于这个直线方向的像素值累计求和。
  • 这样的话,对原始灰度图像进行二值化处理以后,再进行拉冬变换,得到结果矩阵,找到极值点,就可以确定直线的位置。因为垂直于直线的方向上,线积分会呈现为极值点。个人觉得这里的线积分是不区分方向的,也就是不区分正向负向的概念。

B站关于Radon变换的可视化解释&CT原理

https://www.bilibili.com/video/BV12J411n7Wb/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=83f28538cba7cf90472dcefa298c445e


3. 论文内容复现

%% Recurrence code
function Recurrence()  
  
srcImage=imread('girl.png');
figure
imshow(srcImage)
title('Original Image')

grayImage=rgb2gray(srcImage);  
figure
imshow(grayImage)
title('Gray Image')

cannyImage=edge(grayImage,'canny');  
figure
imshow(cannyImage)
title('Canny Image')
  
theta=0:180;  
[R,x]=radon(cannyImage,theta);  
figure,imagesc(theta,x,R);   
title('R_theta X');   
xlabel('theta(degree)');   
ylabel('X\prime');   
colormap(hot);    
colorbar;  
  
end 

图像识别1-Radon变换学习-MATLAB得到热力图_第8张图片
图像识别1-Radon变换学习-MATLAB得到热力图_第9张图片
图像识别1-Radon变换学习-MATLAB得到热力图_第10张图片
图像识别1-Radon变换学习-MATLAB得到热力图_第11张图片

你可能感兴趣的:(matlab,学习,图像处理)