当前位置: 首页 > article >正文

Matlab数字图像处理核心项目实践:包含直方图均衡、空间过滤器增强、傅立叶变换与频域滤波、噪...

Matlab数字图像处理 包含以下内容 项目 1直方图均衡 项目 2使用空间过滤器增强图像 项目 3频域中的傅立叶变换和滤波 项目 4噪声模型和降噪 项目 5使用逆滤波器和维纳滤波器进行图像恢复 项目 6具有最近邻和双线性插值方法的几何变换 项目7基于离散余弦变换和小波变换的图像压缩 项目 8形态处理 项目 9边缘检测Roberts、Prewitt、Sobel、Marr-Hildreth 和 Canny 边缘检测器和图像分割Otsu 的方法 项目 10图像表示边界跟随和链码和主成分描述翻完旧硬盘里的10个数字图像处理大作业文件夹突然发现当年从只会点PS RGB滑块瞎调滤镜到能用Matlab写各种底层算子的过程挺像开冈萨雷斯同款盲盒——每个算子都是个小咒语试错起来比啃带满彩色插图还夹着折痕公式的厚书爽太多。先从第一个踩坑踩得最浅的“亮瞎眼暗戳戳变清晰”神器直方图均衡说起吧。一开始只会直接调用Matlab现成的histeq(I, 256)后来为了凑大作业的“工作量注水部分”别笑谁大作业没加过一两句自己编的碎碎念注释加个核心简化版手动步骤写了个只算256级灰度图的迷你版% 迷你版旧书扉页亮度修复器仅限无彩图旧照片当年穷买不起高清 I imread(1998年图书馆阿姨签名.jpg); if ndims(I) 3 I rgb2gray(I); end [M,N] size(I); counts imhist(I, 256); % 先数每个灰度有多少像素当年写成sum(Ik)循环过慢死 cdf cumsum(counts) / (M*N); % 攒概率当年冈萨雷斯说这是“累计分布函数的经验估计”完全听不懂就知道是把小的概率往上堆 new_gray uint8(round(cdf * 255)); % 当年纠结死四舍五入还是floorfloor试过签名太淡还是round顺眼 I_eq_min new_gray(I 1); % 像素值从0开始索引从1开始当年卡了半小时bug才发现 subplot(1,2,1); imshow(I); title(暗戳戳只有签名轮廓); subplot(1,2,2); imshow(I_eq_min); title(居然能看清“周三奶茶半价券忘给张同学”);当年对比那个张同学的奶茶券备注时差点叫出声——原来手动调PS根本救不了的东西攒点概率堆一堆就行。当然后来才知道histeq其实还有个小尾巴能控制直方图的形状比如用histeq(I,hgram)匹配目标直方图当年嫌麻烦没加错过了满分。接下来的空间滤波项目解锁了一堆PS滤镜的“真容”原来“高斯模糊”不是随便糊是用一个中间亮四周暗的高斯核卷一卷原来“锐化过度变狗啃”是拉普拉斯算子的阈值没设好原来边缘检测的简单版居然就是用Roberts的两个2x2小核或者Prewitt/Sobel的3x3大核上下左右差一差像素值。当年最开心的是把图书馆阿姨签名的旧照片再锐化一下备注的字体居然能隐约辨认正楷还是行草% 行草还是正楷锐化拉满试试 I_eq histeq(I); % 这次直接用现成的histeq偷懒 sobel_y fspecial(sobel); % 竖边检测核 sobel_x sobel_y; % 横边检测核当年转置这个小技巧省了好多打字 I_sobel_x imfilter(I_eq, sobel_x, replicate); % 边缘补全选replicate当年试symmetric/circular选circular签名居然和照片边缘连起来了像个蜘蛛网 I_sobel_y imfilter(I_eq, sobel_y, replicate); I_sobel sqrt(double(I_sobel_x).^2 double(I_sobel_y).^2); % 算梯度模长当年直接abs相加过模长还是更清晰一点 I_sobel uint8(255 * mat2gray(I_sobel)); % 归一化到0-255当年忘归一化显示出来全是黑的以为算子坏了 subplot(1,3,1); imshow(I_eq); title(均衡后); subplot(1,3,2); imshow(I_sobel); title(模长锐化后备注正楷);当年老师批作业的时候在备注正楷旁边画了个笑脸说“观察得很仔细下次记得给拉普拉斯也设个阈值试试不然狗啃得厉害”。说到阈值后面的Otsu分割就是自动找这个“最佳狗啃阈值”的神器当年第一次用Otsu的时候简直惊为天人原来不用手动调imtool的滑动条Matlab自动算出来的阈值就能把旧照片的签名从背景里抠出来。抠出来的签名还能用后面学的形态处理腐蚀膨胀开运算闭运算修一修毛边比如先开运算先腐蚀后膨胀去掉小毛点再闭运算先膨胀后腐蚀连起来断掉的笔画% 自动抠签名修毛边一条龙 level graythresh(I_eq); % Otsu算阈值当年写成level0.5二分过签名连背景糊成一团 I_binary imbinarize(I_eq, level); se strel(disk, 2); % 选半径2的圆盘形结构元素当年选正方形修毛边修得太狠备注的“三”变成了“一” I_open imopen(I_binary, se); I_close imclose(I_open, se); % 一条龙完成 subplot(1,3,1); imshow(I_binary); title(Otsu自动二分有小毛点和断笔画); subplot(1,3,2); imshow(I_open); title(开运算后毛点没了但断笔画更明显); subplot(1,3,3); imshow(I_close); title(闭运算后毛点没了断笔画连了);抠出来的签名还能用后面学的边界跟随和链码存成一串数字当年存成了一个txt文件发给同学炫耀同学说“一串数字看不懂但知道你这作业做了挺多东西”。Matlab数字图像处理 包含以下内容 项目 1直方图均衡 项目 2使用空间过滤器增强图像 项目 3频域中的傅立叶变换和滤波 项目 4噪声模型和降噪 项目 5使用逆滤波器和维纳滤波器进行图像恢复 项目 6具有最近邻和双线性插值方法的几何变换 项目7基于离散余弦变换和小波变换的图像压缩 项目 8形态处理 项目 9边缘检测Roberts、Prewitt、Sobel、Marr-Hildreth 和 Canny 边缘检测器和图像分割Otsu 的方法 项目 10图像表示边界跟随和链码和主成分描述炫耀完边界链码接下来就是傅里叶变换和频域滤波的“玄学项目”了当年第一次算fft2的时候直接imshow出来全是黑的后来才知道要fftshift把直流分量移到中间还要用log(1abs(F))压缩动态范围% 玄学傅里叶把模糊旧照片变不模糊试试其实先加了个运动模糊 I rgb2gray(imread(张同学大头贴.jpg)); PSF fspecial(motion, 20, 45); % 加个45度20像素的运动模糊当年大头贴手抖拍的就是这个效果 I_blur imfilter(I, PSF, conv, circular); % 选circular卷积避免边缘黑边虽然频域本来就是circular的 F_blur fft2(I_blur); F_blur_shift fftshift(F_blur); S_blur log(1 abs(F_blur_shift)); % 压缩动态范围当年直接imshow abs(F_blur_shift)只有中间一个亮点 subplot(1,2,1); imshow(I_blur); title(45度手抖模糊大头贴); subplot(1,2,2); imshow(S_blur, []); title(傅里叶频谱中间亮四周有45度的模糊条纹);当年看到四周的45度模糊条纹时终于相信傅里叶变换不是玄学了——原来空间域的模糊在频域就是特定方向的条纹。接下来用逆滤波和维纳滤波恢复逆滤波当年没加噪声还好一加高斯椒盐混合噪声直接变成雪花屏维纳滤波就稳多了能自动平衡逆滤波的噪声放大和模糊去除% 雪花屏还是清晰大头贴维纳滤波选后者 I_noise_blur imnoise(I_blur, gaussian, 0, 0.001) imnoise(I_blur, salt pepper, 0.02); % 加混合噪声当年只加高斯维纳滤波和逆滤波差别不大 % 逆滤波不加噪声专用加了就死 F_inv F_blur_shift ./ fftshift(fft2(PSF, M, N)); I_inv real(ifft2(ifftshift(F_inv))); % 维纳滤波加了也不怕 K 0.01; % 信噪比倒数的估计当年调了好久KK0.01刚好 F_wiener F_blur_shift .* conj(fftshift(fft2(PSF, M, N))) ./ (abs(fftshift(fft2(PSF, M, N))).^2 K); I_wiener real(ifft2(ifftshift(F_wiener))); subplot(1,3,1); imshow(I_noise_blur, []); title(混合噪声模糊大头贴); subplot(1,3,2); imshow(I_inv, []); title(逆滤波雪花屏张同学变成马赛克); subplot(1,3,3); imshow(I_wiener, []); title(维纳滤波张同学又回来了);当年老师批作业的时候在K0.01旁边画了个星星说“信噪比倒数估计得很准下次记得用Matlab现成的deconvwnr函数里面有自动估K的选项”。说到现成的函数后面的几何变换最近邻和双线性插值Matlab也有imresize和imrotate但当年为了凑大作业又写了个迷你版的图像放大2倍% 迷你版2倍放大器最近邻狗啃vs双线性顺滑 I imread(签名.jpg); [M,N] size(I); M_new 2*M; N_new 2*N; % 最近邻插值 I_nearest uint8(zeros(M_new, N_new)); for i 1:M_new for j 1:N_new x round(i/2); y round(j/2); if x 1; x 1; end; if x M; x M; end; % 边界补全 if y 1; y 1; end; if y N; y N; end; I_nearest(i,j) I(x,y); end end % 双线性插值写得很丑当年凑数的核心就是取周围四个像素加权平均 I_bilinear uint8(zeros(M_new, N_new)); for i 1:M_new for j 1:N_new x (i-0.5)/2; % 坐标转换当年卡了好久原来最近邻用的是i/2双线性用的是(i-0.5)/2更合理 y (j-0.5)/2; x1 floor(x); x2 x1 1; y1 floor(y); y2 y1 1; if x1 1; x1 1; end; if x2 M; x2 M; end; if y1 1; y1 1; end; if y2 N; y2 N; end; dx x - x1; dy y - y1; I_bilinear(i,j) (1-dx)*(1-dy)*double(I(x1,y1)) dx*(1-dy)*double(I(x2,y1)) (1-dx)*dy*double(I(x1,y2)) dx*dy*double(I(x2,y2)); end end subplot(1,3,1); imshow(I); title(原图签名); subplot(1,3,2); imshow(I_nearest); title(最近邻2倍狗啃签名); subplot(1,3,3); imshow(I_bilinear); title(双线性2倍顺滑签名);当年写双线性插值的循环写了好久运行起来也慢死当年的电脑还是酷睿i3后来才知道用Matlab的矩阵运算代替循环会快很多但当年凑数凑够了就行。最后剩下的就是图像压缩DCT和小波变换和边缘检测的进阶版Marr-Hildreth和Canny还有主成分描述了。图像压缩当年做的是把张同学的大头贴用DCT压缩去掉高频分量也就是细节只保留低频分量也就是轮廓和颜色压缩比居然能达到10:1还能看清张同学的脸% 迷你版DCT压缩器10:1压缩比试试 I rgb2gray(imread(张同学大头贴.jpg)); I im2double(I); T dctmtx(8); % 8x8 DCT变换矩阵 DCT_block (block) T * block.data * T; % 块DCT变换 IDCT_block (block) T * block.data * T; % 块IDCT变换 I_dct blockproc(I, [8 8], DCT_block); % 只保留左上角1/10的低频分量大概前3x3的块不对前1x1不当年保留的是每个8x8块的前k行前k列k3压缩比大概(3*3)/(8*8)14.2%接近10:1 mask zeros(8,8); mask(1:3,1:3) 1; Mask_block (block) block.data .* mask; I_dct_mask blockproc(I_dct, [8 8], Mask_block); I_idct blockproc(I_dct_mask, [8 8], IDCT_block); I_idct im2uint8(I_idct); subplot(1,2,1); imshow(I); title(原图大头贴); subplot(1,2,2); imshow(I_idct); title(10:1左右DCT压缩后能看清脸细节丢了一点);当年老师批作业的时候说“压缩比算得不对要把量化和熵编码也算进去但凑数凑够了及格没问题”。哦对了当年还差点忘了主成分描述主成分描述当年做的是把100张图书馆的旧照片的灰度图排成一个矩阵然后用PCA降维只保留前10个主成分居然能重建出大概的旧照片轮廓当年觉得太神奇了但代码太长就不放了。总的来说这10个数字图像处理大作业虽然当年凑数凑了很多踩坑踩了很多但现在回头看每个坑都是一个学习的机会每个凑数的代码都是一个加深理解的过程。当年只会点PS RGB滑块瞎调滤镜现在知道了每个滤镜背后的数学原理和Matlab小咒语这大概就是数字图像处理这门课的魅力所在吧。

相关文章:

Matlab数字图像处理核心项目实践:包含直方图均衡、空间过滤器增强、傅立叶变换与频域滤波、噪...

Matlab数字图像处理 包含以下内容: 项目 1:直方图均衡 项目 2:使用空间过滤器增强图像 项目 3:频域中的傅立叶变换和滤波 项目 4:噪声模型和降噪 项目 5:使用逆滤波器和维纳滤波器进行图像恢复 项目 6&…...

win10深度清理c盘工具推荐:从更新缓存到微信专清

普通的垃圾清理已经无法满足需求?当C盘空间告急,那些隐藏在系统深处和应用角落的“顽固分子”——比如Windows更新旧文件、微信数GB的聊天缓存——才是真正需要对付的目标。深度清理,就是要对这些难以触及的领域进行精准打击。深度清理的目标…...

MatterGen:深度学习驱动的无机材料设计新范式

MatterGen:深度学习驱动的无机材料设计新范式 【免费下载链接】mattergen Official implementation of MatterGen -- a generative model for inorganic materials design across the periodic table that can be fine-tuned to steer the generation towards a wid…...

搞点氢能,再算算碳税:聊聊综合能源系统的热电优化

考虑阶梯式碳机制与电制氢的综合能源系统热电优化 “双碳”背景下,为提高能源利用率,优化设备的运行灵活性,进一步降低综合能源系统(IES)的碳排放水平,提出一种IES低碳经济运行策略 首先考虑IES参与到碳市场…...

Nunchaku FLUX.1 CustomV3问题解决:提示词怎么写?参数怎么调?一篇搞定

Nunchaku FLUX.1 CustomV3问题解决:提示词怎么写?参数怎么调?一篇搞定 你是不是也遇到过这种情况:兴冲冲地打开了Nunchaku FLUX.1 CustomV3,想生成一张美美的吉卜力风格插画,结果出来的图片要么“货不对板…...

下篇:那个听声辨位的侦探后来破了大案——AI中隐马尔可夫模型的类型与作用,以及它为什么还在被使用

我们说了隐马尔可夫模型是一个“只能听声、不能见人”的侦探,靠着一串声音推理出隔壁房间在发生什么。现在的问题是:它到底有哪些具体的“形态”?不同类型的隐马尔可夫模型分别擅长什么?这个“老古董”在今天还能干什么&#xff1…...

别再只用UI库了!用Tailwind CSS V4快速给Canvas画板组件搭个现代感工具栏

用Tailwind CSS V4为Canvas画板打造专业级工具栏的5个关键技巧 在构建现代Web绘图应用时,Canvas提供了强大的绘图能力,但往往需要配套的UI控件来实现完整的用户体验。传统UI库虽然方便,却可能带来冗余的样式和性能开销。Tailwind CSS V4以其原…...

提升协作效率:KityMinder云同步功能全链路应用指南

提升协作效率:KityMinder云同步功能全链路应用指南 【免费下载链接】kityminder 百度脑图 项目地址: https://gitcode.com/gh_mirrors/ki/kityminder 思维导图云协作是现代团队知识管理与项目协作的核心需求。KityMinder作为百度推出的专业思维导图工具&…...

拯救数字青春:GetQzonehistory让QQ空间记忆永久安家

拯救数字青春:GetQzonehistory让QQ空间记忆永久安家 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在这个信息爆炸的时代,我们的青春记忆正以数据形式储存在各大…...

MySQL数据库基础聚合函数

聚合函数...

大厂笔试面试八股文-算法-数组常考题-final

刷了200道数组题,笔试面试还是不会做?这10道搞懂就够了 刷了200道数组题,面试还是不会做? 问题不是你刷得不够多,而是没抓住核心套路。 我整理了35道大厂真题,发现其实就5个核心技巧。今天把最重要的10道题和背后的套路,全部分享给你。 offer直通车-大厂校招大礼包&#x…...

晶闸管全球市场:2026-2032年CAGR为3.4%

据恒州诚思调研统计,2025年全球晶闸管收入规模约59.96亿元,到2032年收入规模将接近75.71亿元,2026-2032年CAGR为3.4%。晶闸管作为功率半导体领域的核心器件,凭借其独特的性能在众多电力电子场景中发挥着关键作用。全球晶闸管&…...

如何在3天内快速掌握音频驱动面部动画技术?完整实战指南 [特殊字符]

如何在3天内快速掌握音频驱动面部动画技术?完整实战指南 🚀 【免费下载链接】FACEGOOD-Audio2Face http://www.facegood.cc 项目地址: https://gitcode.com/gh_mirrors/fa/FACEGOOD-Audio2Face 想要让虚拟角色拥有逼真的面部表情吗?FA…...

我的上课记

...

4步完成Axure本地化设置:让新手轻松上手的中文界面方案

4步完成Axure本地化设置:让新手轻松上手的中文界面方案 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn …...

Lychee Rerank MM GPU算力:Qwen2.5-VL 7B模型在A10上16GB显存高效运行

Lychee Rerank MM GPU算力:Qwen2.5-VL 7B模型在A10上16GB显存高效运行 1. 引言:当多模态检索遇到“选择困难症” 想象一下,你正在一个庞大的多媒体资料库里搜索。你输入“一只在草地上玩耍的棕色小狗”,系统返回了100个结果&…...

[vxe-table] 动态列渲染中v-if与key的协同优化方案

1. 动态列渲染的常见问题与根源分析 在使用vxe-table进行动态列渲染时,很多开发者都遇到过这样的场景:当表格列通过v-if条件动态显示或隐藏时,列的位置和样式会出现莫名其妙的错乱。比如原本应该在第三列显示的数据突然跳到了第五列&#xff…...

保姆级教程:在CompactLogix 5380上配置AB_Socket_TCP库,实现断线重连与自动收发

工业级TCP通信实战:CompactLogix 5380双IP配置与AB_Socket_TCP库深度应用 在工业自动化领域,稳定可靠的通信系统如同生产线的神经系统。当一台CompactLogix 5380控制器需要7x24小时不间断地与上位机、传感器网络或第三方设备交换数据时,传统的…...

百川2-13B模型API调用详解:从Python安装到第一个成功请求

百川2-13B模型API调用详解:从Python安装到第一个成功请求 你是不是也对大模型API调用感到好奇,但一看到那些技术文档就头疼?别担心,今天咱们就来手把手走一遍,从零开始,用最简单的Python代码,完…...

writeup

3-hafuhafu - Writeup by AI 题目信息 项目内容平台BugKu类型Crypto (RSA)考点RSA 加密、大数分解、私钥计算 题目描述 题目给出了一个 RSA 公钥和一段 Base64 编码的密文,要求解密得到 flag。 公钥信息: pk (25572000680139535995611501720832880…...

不止于配置:用Horizon UAG 21.11打造安全外网访问,别忘了这些加固设置

超越基础配置:Horizon UAG 21.11安全加固全指南 在虚拟桌面架构中,统一接入网关(UAG)作为内外网流量的安全屏障,其配置合理性直接影响整体架构的安全性。许多管理员在完成UAG基础部署后,往往忽略了更深层次…...

BT33F双基二极管的基本特性

简 介: 本文测试了BT33F双基二极管的特性,发现其发射极对两个基极呈现不同导通电压(0.86V和1.6V),B1、B2间电阻约13KΩ。实验表明,只有当B1接地、B2接5V电源时,电路才能产生46Hz的振荡信号&…...

RSA2 - Writeup by AI

RSA2 - Writeup by AI 题目信息项目内容题目来源Bugku CTF题目类型Crypto (密码学)考点RSA 小指数攻击、Rabin 加密题目描述 给定 RSA 加密参数: 加密指数 e 2模数 N(3072 位)密文 c 要求解密得到 flag。 考点分析 核心知识点 RSA 小指数攻击…...

4步解决RetroArch缩略图显示异常,恢复游戏库视觉体验

4步解决RetroArch缩略图显示异常,恢复游戏库视觉体验 【免费下载链接】RetroArch Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3. 项目地址: https://gitcode.com/GitHub_Trending/re/RetroArch 在RetroArch的使用过程中&am…...

TMSpeech:开源本地语音转文字工具的隐私革命

TMSpeech:开源本地语音转文字工具的隐私革命 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 在数字化办公浪潮中,语音转文字工具已成为效率提升的关键助手,但云端处理的隐私泄露风…...

Qwen3.5-9B-AWQ-4bit多模态落地:制造业设备铭牌识别→型号查询→维保文档匹配

Qwen3.5-9B-AWQ-4bit多模态落地:制造业设备铭牌识别→型号查询→维保文档匹配 1. 制造业设备管理的痛点与解决方案 在制造业设备管理中,设备铭牌识别、型号查询和维保文档匹配是三个关键但繁琐的环节。传统方式需要人工拍照、记录铭牌信息,…...

告别ViT的笨重:手把手教你用SegFormer在Cityscapes数据集上实现高效语义分割

告别ViT的笨重:手把手教你用SegFormer在Cityscapes数据集上实现高效语义分割 在自动驾驶、遥感影像分析等计算机视觉应用中,语义分割技术扮演着关键角色。传统基于卷积神经网络(CNN)的方法虽然取得了显著进展,但面临着…...

Windows右键菜单终极管理指南:用ContextMenuManager轻松掌控右键菜单

Windows右键菜单终极管理指南:用ContextMenuManager轻松掌控右键菜单 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为杂乱的Windows右键菜单烦…...

从零到一:MicroPython 环境搭建与首个硬件交互项目实战

1. 初识MicroPython:为什么选择它? 第一次接触MicroPython时,我正为一个智能家居项目寻找合适的开发方案。当时被它"Python on hardware"的理念吸引——毕竟谁能拒绝用熟悉的Python语法直接控制硬件呢?MicroPython本质上…...

突破平台限制:res-downloader高效捕获网络资源的全方位解决方案

突破平台限制:res-downloader高效捕获网络资源的全方位解决方案 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在…...