• 大小: 851KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: Matlab
  • 标签:

资源简介

MATLAB仿真图像缩放,以.M文档编辑,介绍了图像缩放的相关算法,可以使用

资源截图

代码片段和文件信息

%function aftans = image_rotate(imagepath theta)
% 两维图像旋转以及双线性灰度差值算法的实现
% Ref. 章毓晋. 图像工程(上册)——图像处理. 清华大学出版社
% Author: lskyp    Date: 2009.08.12
im_init = imread(‘desert.jpg‘);
%im_init = imread(imagepath);
im_init = double(im_init); %对于灰度图像,uint8表示范围[0,255],double型表示范围[0,1]
im_height = size(im_init1);
im_width = size(im_init2);
% 分别处理灰度图像和RGB图像
if ndims(im_init) == 3
    im_final = zeros(im_heightim_width3);
    R = im_init(::1);
    G = im_init(::2);
    B = im_init(::3);
    R_final = im_final(::1);
    G_final = im_final(::2);
    B_final = im_final(::3);
else
    im_final = zeros(im_heightim_width);
end
 theta = pi/5;
rot_matrix = [cos(theta) -sin(theta);sin(theta) cos(theta)];
tranh = (im_height+1)/2;
tranw = (im_width+1)/2;
for h = 1:im_height
    for w = 1:im_width
        % 平移至原点,旋转,然后再平移回去
        new_position = rot_matrix*[h - tranh;w - tranw]+ [tranh; tranw];
        % 这里是认为图像中心处为原点,建立局部坐标系,方向还是向下向右
        % 旋转后,再平移回去
        new_position(1) = mod(new_position(1)im_height);
        new_position(2) = mod(new_position(2)im_width);
        % 由于旋转有可能会跑出图像边界,进行了模操作
        % 这是控制操作范围的好方法
        if new_position(1) == 0
            new_position(1) = 1;
        end
        if new_position(2) == 0
            new_position(2) = 1;
        end
        % 当然,图像阵默认是从1开始计量,所以不能出现0
        % 如果新位置为整数,那么直接赋予灰度值或者RGB值
        % 否则,按照双线性插值计算,使用后向映射
        if new_position == round(new_position)
            if ndims(im_init) == 3
                R_final(hw) = R(new_position(1)new_position(2));
                G_final(hw) = G(new_position(1)new_position(2));
                B_final(hw) = B(new_position(1)new_position(2));
            else
                im_final(hw) = im_init(new_position(1)new_position(2));
            end
            % 这里可以出对应的final位置的像素是旋转后所在位置对应的原图像像素值
        else
            h_new = floor(new_position(1));
            w_new = floor(new_position(2));
            % 先取整,向0方向取整
            if h_new == 0
                h_new = 1;
            end
            if w_new == 0
                w_new = 1;
            end
            % 消除0位置
            if ndims(im_init) == 3
                % 双线性插值的实现过程 Ref. 章毓晋. 图像工程(上册)
                % ——图像处理. 清华大学出版社
                R_temp1 = R(h_new + 1w_new)*(new_position(1) - h_new)+ R(h_neww_new)*(h_new + 1 - new_position(1));
                R_temp2 = R(h_new + 1w_new + 1)*(new_position(1) - h_new)...
                        + R(h_neww_new + 1)*(h_new + 1 - new_position(1));
                % 先进行h方向的线性插值
                R_final(hw) = R_temp1*(w_new + 1 - new_position(2))...
                             + R_temp2*(new_position(2) - w_new);
                % 再进行w方向的线性插值
                G_temp1 = G(h_new + 1w_new)*(new_position(1) - h_new)...
                        + G(h_neww_new)*(h_new + 1 - new_position(1));
                G_temp2 = G(h_new + 1w_new + 1)*(new_position(1) - h_new)...
   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     目录          0  2010-03-23 23:43  图像缩放

     文件       5195  2009-11-28 12:38  图像缩放\11111.asv

     文件       5198  2009-11-28 13:15  图像缩放\11111.m

     文件      15026  2009-11-28 09:30  图像缩放\cup.jpg

     文件     845941  2009-04-22 16:55  图像缩放\Desert.jpg

     文件       2278  2009-11-28 09:29  图像缩放\images.jpg

     文件       1616  2009-11-28 19:22  图像缩放\im_f.asv

     文件       1613  2009-11-28 19:27  图像缩放\im_f.m

     文件        739  2009-11-28 18:01  图像缩放\im_K.asv

     文件        739  2009-11-28 18:01  图像缩放\im_K.m

     文件       1074  2009-11-28 12:46  图像缩放\im_R.m

     文件       1392  2009-11-28 20:30  图像缩放\im_rotate.asv

     文件       1428  2009-11-28 20:44  图像缩放\im_rotate.m

     文件       3224  2009-11-28 19:26  图像缩放\man.jpg

----------- ---------  ---------- -----  ----

               885463                    14


评论

共有 条评论

相关资源