利用MATLAB编写程序实现拉普拉斯增强,不要调用imfilter函数
时间: 2024-05-11 19:20:14 浏览: 75
好的,下面是一个简单的 MATLAB 程序实现拉普拉斯增强:
```matlab
% 读取图像
img = imread('image.jpg');
% 将图像转为灰度图像
gray_img = rgb2gray(img);
% 拉普拉斯滤波模板
laplacian_filter = [-1, -1, -1; -1, 8, -1; -1, -1, -1];
% 获取图像大小
[rows, cols] = size(gray_img);
% 定义增强后的图像
enhanced_img = zeros(rows, cols);
% 对每个像素进行操作
for i = 2 : rows - 1
for j = 2 : cols - 1
% 获取周围的像素值
neighbors = [gray_img(i - 1, j - 1), gray_img(i - 1, j), gray_img(i - 1, j + 1), ...
gray_img(i, j - 1), gray_img(i, j), gray_img(i, j + 1), ...
gray_img(i + 1, j - 1), gray_img(i + 1, j), gray_img(i + 1, j + 1)];
% 拉普拉斯滤波
filtered_pixel = sum(neighbors .* laplacian_filter, 'all');
% 像素值限制在 [0, 255] 之间
enhanced_img(i, j) = max(min(filtered_pixel, 255), 0);
end
end
% 显示原图和增强后的图像
figure;
subplot(1, 2, 1);
imshow(gray_img);
title('原图');
subplot(1, 2, 2);
imshow(enhanced_img, []);
title('拉普拉斯增强后的图像');
```
这个程序通过对每个像素进行操作,使用拉普拉斯滤波器来增强图像。在程序中,我们先读取图像,然后将其转为灰度图像。接着,定义一个拉普拉斯滤波模板,并获取图像大小。之后,对每个像素进行操作,获取周围的像素值,使用拉普拉斯滤波器来过滤像素值,限制像素值在 [0, 255] 之间,并将增强后的像素值存储在一个新的矩阵中。最后,显示原图和增强后的图像。
阅读全文