MATLAB 亚像素边缘提取图像显示 - 基于Canny和Zernike矩
这段代码使用Canny边缘检测算法提取图像的边缘,并将边缘图像显示出来。然后,通过find函数获取边缘像素的坐标。接下来,通过循环遍历每个边缘像素,获取其邻域,并计算Zernike矩。最后,通过ZernikeMomentsnew函数计算Zernike矩,并将结果存储在edgeParams数组中。
要显示亚像素边缘提取后的图像,可以使用imresize函数将边缘图像放大。修改后的代码如下:
% 读取图像
img = imread('lena.jpg');
% 将图像转换为灰度图像
grayImg = rgb2gray(img);
% Canny边缘检测
edges = edge(grayImg, 'canny');
% 显示边缘图像
figure;
imshow(edges);
title('Canny边缘图像');
% 获取边缘像素的坐标
[row, col] = find(edges);
% 计算边缘参数
edgeParams = zeros(length(row), 25); % 修改数组大小为1×25
for i = 1:length(row)
% 获取当前像素的邻域
neighborhood = grayImg(row(i)-1:row(i)+1, col(i)-1:col(i)+1);
% 计算Zernike矩
zernikeMoments = ZernikeMomentsnew(neighborhood);
% 存储边缘参数
edgeParams(i, :) = zernikeMoments;
end
% 放大边缘图像
enlargedEdges = imresize(edges, 10);
% 显示放大后的边缘图像
figure;
imshow(enlargedEdges);
title('放大后的边缘图像');
在代码的最后,添加了放大边缘图像的步骤,并使用imshow函数显示放大后的边缘图像。可以通过修改imresize函数的参数来调整放大倍数。
原文地址: https://www.cveoy.top/t/topic/fzYK 著作权归作者所有。请勿转载和采集!