建立个人的文件夹,将实验所需图片素材放置于文件夹之中。 打开matlab, 新建一个m文件,保存于个人文件夹当中,文件名形如’medianfilter.m’。 在新建的m文件中编写图像边缘延拓处理代码(函 数) ,实现对图像边缘延拓。 在新建的m文件中编写中值提取代码(函数),实现提取一个数字序列的中值功能。
时间: 2024-03-31 18:36:33 浏览: 54
以下是matlab代码实现:
% 图像边缘延拓处理函数
function img_ext = imageExtension(img, ext_size)
% 获取图像尺寸
[rows, cols] = size(img);
% 创建新的图像矩阵,用于存储扩展后的图像
img_ext = zeros(rows+2*ext_size, cols+2*ext_size);
% 将原始图像复制到新的图像矩阵中心位置
img_ext(ext_size+1:rows+ext_size, ext_size+1:cols+ext_size) = img;
% 处理左、右两列
img_ext(ext_size+1:rows+ext_size, 1:ext_size) = img(:,1:ext_size);
img_ext(ext_size+1:rows+ext_size, cols+ext_size+1:end) = img(:,end-ext_size+1:end);
% 处理上、下两行
img_ext(1:ext_size, :) = img_ext(ext_size+1,:);
img_ext(rows+ext_size+1:end, :) = img_ext(rows+ext_size,:);
end
% 中值提取函数
function median = medianFilter(data)
% 获取数据长度
n = length(data);
% 对数据进行排序
data = sort(data);
% 如果数据长度为偶数,取中间两个数的平均值
if mod(n, 2) == 0
median = (data(n/2) + data(n/2+1)) / 2;
% 如果数据长度为奇数,取中间数
else
median = data((n+1)/2);
end
end
以上代码中,第一个函数用于实现图像边缘延拓处理,可以通过指定扩展大小来扩展原始图像,使其可以进行卷积操作等。第二个函数用于实现中值提取功能,可以对一个数字序列进行排序后取中间值作为结果。