Java教程

声呐矩形图像转换为扇形算法

本文主要是介绍声呐矩形图像转换为扇形算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
clear;clc;close;
%% 读取输入图像数据
imIn=imread('lion.jpg');
imIn=flip(imIn);% 倒置读入图像数据
[hIn,wIn,~]=size(imIn);% 输入图像的宽和高
%% 根据扇形几何关系计算输出图像像素
angle=15;               % 张开角度的一半
ratio=8/11;            % 假定Llength/(Llength+Lstart)=8/9,要求<1
hOut=ceil(hIn/ratio);   % 输出图像数据高度,取整操作
Lstart=ceil(hOut*(1-ratio));
Llength=hIn;
wOut=2*ceil(hOut*sind(angle));% 输出图像数据宽度
imOut=zeros(hOut,wOut,3);     % 根据大小分配输出图像数据空间
%% 根据张开角度范围划分射线角度
alpha=linspace(-angle,angle,wIn);
%% 遍历输入图像数据每一列,找到输出图像数据中的坐标位置
figure(1) % 定位图像
set(gcf,'name','扇形定位点') % 定位图像
xlim([0 wOut])
ylim([0 hOut])
axis equal
for i=1:wIn % 遍历输入图像数据每一列
    d=cosd(alpha(i))*(Lstart:hOut) ;% 输出图像纵坐标
    lats=ceil(d);
    b=sind(alpha(i))*(Lstart:hOut)+wOut/2; % 输出图像横坐标
    lons=ceil(b);
    for j=1:hIn
       imOut(lats(j),lons(j),:)=imIn(j,i,:);% 由于扇形坐标经纬度点有重复,将输入图像每个数据点依次赋值给输出图像数据的对应点
    end
    plot(lons,lats) % 画出经纬度坐标
    axis equal
    hold on
end
imOut=uint8(imOut);
figure(2)  % 扇形输出图像
set(gcf,'name','输出图像')
imOut=flip(imOut);
h=imshow(imOut)
axis equal
figure(3)  % 输入图像
set(gcf,'name','输入图像')
imshow(imIn);
axis equal

这篇关于声呐矩形图像转换为扇形算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!