# 信号与系统课程设计
[TOC]
## 图像处理(平滑、锐化与边缘提取)
### 理论基础
图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。
空间滤波是一种采用滤波处理的影像增强方法。目的是改善影像质量,包括去除高频噪声与干扰,及影像边缘增强、线性增强以及去模糊等。平滑和锐化滤波器是处理数字图像的常用方法。
平滑的主要目的是减少图像中的噪声。锐化的主要目的是突出图像中的细节或增强已经模糊的细节。
### 图像平滑处理
图像在获取、传输的过程中,可能会受到干扰的影响,会产生噪声,噪声是一种出错了的信号,噪声会造成图像粗糙,需要我们对图像进行平滑处理,保留有用的信号。
在imgpr1.m,imgpr2.m中我们使用均值滤波、高斯滤波、中值滤波对img1,img2进行了平滑处理,分别得到三种结果,由于img1中存在椒盐干扰,因此中值滤波效果最好,对于img2则三种效果相似。
img1(最左为原图)
![image-20230523232030867](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305232320952.png)
img2(最左为原图)
![image-20230523231924542](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305232319447.png)
### 图像锐化处理
图像锐化*(image sharpening)*是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,图像锐化是为了突出图像上地物的边缘、轮廓,或某些线性目标要素的特征。这种滤波方法提高了地物边缘与周围像元之间的反差,因此也被称为边缘增强。
图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,这就需要利用图像锐化技术,使图像的边缘变的清晰。
公式推导:
$$
▽^2f=▽f(x+1)−▽f(x)\\
▽f(x)=f(x+1)−f(x)\\
$$
可得:
$$
f(x)=f(x+1)−▽f(x)\\
$$
则:
$$
f(x)=f(x+1)−▽f(x)+▽^2f(x)\\
$$
那么锐化后的图像即为:
$$
g(x)=f(x+1)−▽f(x)+k▽^2f(x)\\
$$
在不考虑精确度的情况下:
$$
g(x)=f(x)+k▽^2f(x)
$$
在imgpr3.m中我们使用两种不同卷积核对img3进行了锐化处理(最左为原图):
![image-20230523232048348](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305232320462.png)
### 图像边缘提取
在imgpr4.m中,我们利用高斯滤波和canny算子,对img2进行了边缘提取:
![image-20230523232154263](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305232321314.png)
## 求图像中细胞平均半径
### 原图
![image](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305282026738.jpeg)
### 预处理
#### 中值滤波
图中很明显存在椒盐噪声(黑白点),因此首先使用中值滤波进行处理。
处理后:
![p1](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305282026731.jpeg)
#### 高斯低通滤波与巴特沃斯低通滤波
之后使用傅里叶变换,将其转换到频域上,再进行后续操作:
- 高斯低通滤波
```matlab
% 读入原始图像
img = imread('p1.jpg');
% 对原始图像进行傅里叶变换
F = fftshift(fft2(img));
% 高斯低通滤波器参数
D0 = 50;
% 构造高斯低通滤波器
[x, y] = meshgrid(-(size(img,1)/2):(size(img,1)/2-1), -(size(img,2)/2):(size(img,2)/2-1));
dist = sqrt(x.^2 + y.^2);
gauss_filter = exp(-dist.^2./(2*D0^2));
% 滤波
filtered_F = F .* gauss_filter;
% 反变换
filtered_img = uint8(real(ifft2(ifftshift(filtered_F))));
% 显示滤波前后的图像
figure;
subplot(1,2,1);imshow(img);title('原始图像');
subplot(1,2,2);imshow(filtered_img);title('滤波后的图像');
```
得到图像![untitled](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305282026807.png)
- 巴特沃斯低通滤波
```matlab
p1 = imread('p1.jpg');
F=double(p1);%数据类型转换,MATLAB不支特图像的无符号整型的i计算
G = fft2(F);%傅立叶变换
G=fftshift(G);%转换数据矩阵
[M,N]=size(G);
nn=2;%二阶巴特沃斯(Butterworth)高通滤波器
d0=30;
m=fix (M/2);n=fix(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));%i计算传递函数
result(i,j) = h*G(i,j);
end
end
result=ifftshift(result);
Y2=ifft2(result);
Y3=uint8(real(Y2));
subplot(121),imshow(p1),title('原图像');%滤波后图像显示
subplot(122),imshow(Y3),title('巴特沃斯低通滤波后图像');%滤波后图像显示
P_signal = sum(p1(:).^2);
P_noise_denoised = sum((Y3(:) - p1(:)).^2);
SNR_denoised = 10*log10(P_signal/P_noise_denoised);
disp(SNR_denoised);
```
得到图像![untitled](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305282026799.png)
- 两种滤波的比较
| 滤波 | 高斯低通滤波 | 巴特沃斯低通滤波 |
| ------ | ------------ | ---------------- |
| 信噪比 | 6.3678 | 5.1209 |
因此选择高斯低通滤波,之后进行逆傅里叶变换
#### 其余预处理
1. 灰度化
2. 直方图均衡化
3. 低帽变换
4. 调节灰度对比
5. 二值化
6. 形态学操作
- 开操作
- 闭操作
### 计算细胞半径
#### hough圆形检测
```matlab
% 使用Hough变换进行圆形检测
[centers, radii] = imfindcircles(BW3,[4, 20]);
% 计算细胞平均半径
avgRadius = mean(radii);
sigma = std(radii);
lower_threshold = avgRadius - 2 * sigma;
upper_threshold = avgRadius + 2 * sigma;
% 找到位于阈值内的所有元素
idx = find(radii >= lower_threshold & radii <= upper_threshold);
radii = radii(idx);
centers = centers(idx,:);
avgRadius = mean(radii);
figure;
% 显示原始图像和检测结果
imshow(p2); hold on;
h = viscircles(centers, radii,'EdgeColor','b');
title(['Average cell radius: ', num2str(avgRadius)]);
```
结果如图所示:
![untitled](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305282026826.png)
#### bwlabel函数求半径
```matlab
% 连通区域分析,计算每个细胞的面积和周长,并计算等效直径
[L, num] = bwlabel(BW3);
stats = regionprops(L, {'Area', 'Perimeter'});
diameters = zeros(num, 1);
for i = 1 : num
diameters(i) = 2 * sqrt(stats(i).Area / pi);
end
boundaries = bwboundaries(BW3);
disp(['The average diameter of cells is: ', num2str(avg_diameter)]);
figure
% 画出每个细胞的轮廓
imshow(BW3);
hold on;
for i=1:length(boundaries)
boundary = boundaries{i};
plot(boundary(:,2), boundary(:,1),'r','LineWidth',2);
end
```
结果如图所示
![untitled](https://zjyimage.oss-cn-beijing.aliyuncs.com/202305282026872.png)
#### 两种结果对比
1. hough圆形检测法,对于部分形状不是圆的细胞,可能并不适用;
2. bwlabel函数求半径法,由于很多细胞重叠在一起,导致被认定为一个细胞,因此结果比较差。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的学生、或者相关技术学习者作为学习资料参考使用。 3、该资源包括全部源码,需要具备一定基础才能看懂并调试代码。
资源推荐
资源详情
资源评论
收起资源包目录
基于matlab的图像处理(平滑、锐化与边缘提取)+求图像中细胞平均半径方法源码+项目说明.zip (17个子文件)
project_code_0628
细胞尺寸计算
hough.m 1KB
Median_filtering.m 144B
bw.m 1KB
image.jpg 95KB
BLP.m 814B
gs.m 849B
题目.pdf 386KB
p2.jpg 31KB
p1.jpg 49KB
README.md 7KB
图像处理(平滑、锐化与边缘提取)
img2.jpg 62KB
imgpr1.m 448B
imgpr2.m 422B
img1.jpg 67KB
imgpr3.m 331B
img3.jpg 94KB
imgpr4.m 223B
共 17 条
- 1
资源评论
辣椒种子
- 粉丝: 4141
- 资源: 5768
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- BDD,Python 风格 .zip
- 个人原创STM32F1 BOOTLOADER,主控芯片为STM32F103VET6
- Alpaca 交易 API 的 Python 客户端.zip
- 基于Django与讯飞开放平台的ACGN文化交流平台源码
- 中国象棋(自行初步设计)
- 微信小程序实现找不同游戏
- 100_Numpy_exercises.ipynb
- 2023-04-06-项目笔记 - 第三百二十六阶段 - 4.4.2.324全局变量的作用域-324 -2025.11.23
- 一个简单的模板,开始用 Python 编写你自己的个性化 Discord 机器人.zip
- TP-Link 智能家居产品的 Python API.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功