第一次尝试写博客,写的不好,多多见谅!
今天,看到一篇文章,可以使用傅立叶的方式来实现缩放,自己在图像处理基本是白痴,因此,花些时间来学习缩放的算法。下面我将按照线性代数的原理来实现图像的放大缩小。
ImageS 源图像, ImageSx 源图像的宽度, ImageSy 源图像的高度
ImageD 目标图像, ImageDx 目标图像的宽度, ImageDy 目标图像的高度
x_scale 图像宽放大/缩小倍数
y_scale 图像高放大/缩小倍数
ImageD(x,y) = ImageS (int(x/x_scale ), int(y/y)scale))
%缩放函数
function [ ImageD ] = ImageResize(ImageS ,x_scale,y_scale )
%UNTITLED6 此处显示有关此函数的摘要
% 此处显示详细说明
[ImageSx ImageSy g] = size(ImageS);
ImageS = im2double(ImageS);
ImageDx = ImageSx*x_scale;
ImageDy = ImageSy*y_scale;
ImageD = ones(ImageDx,ImageDy,g);
for i = 1: ImageDx
for j = 1: ImageDy
ImageD(i,j,:) = ImageS(round(i/x_scale),round(j/y_scale),:);
end
end
end
%测试代码
in = imread('g:\cool\data\1.jpeg');
out1 = ImageResize(in,0.5,0.5);
out2 = ImageResize(in,3,3);
figure('name','Source');
imshow(in);
figure('name','Zoom Out');
imshow(out1);
figure('name','Zoom In');
imshow(out2);
本文介绍了如何使用傅立叶变换在MATLAB中实现图像的放大和缩小。通过线性代数原理,作者展示了如何定义源图像和目标图像的尺寸,以及如何运用缩放函数进行图像处理。提供了测试代码展示缩放效果。
6411





