【图像处理】检测芯片载板的芯片个数(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

与通用的微处理器相比,数字信号处理器的功能在许多方面都作了扩充和增强,在结构上采用了哈佛总线结构,在硬件上获得系统设计的极大灵活性,DSP芯片的可编程性和强大的处理能力使其在图像处理领域得到广泛的应用和发展。随着市场的日趋成熟,运算速度更高的可编程系统级DSP芯片必将具有更广泛的应用前景。芯片分析是基因芯片技术的一个重要组成部分在基因芯片的应用中扮演着一个重要的角色。在本文章中,主要研究基因芯片图像的分析和数据处理,从而提取出基因芯片的杂交反应信号点的亮度信息,获得有用的生物信息。 然后结合基因芯片数字图像的特点,给出了图像信号点分析的基本步骤。 由于基因芯片在杂交过程中会产生一些噪声,如某些无规律的噪声、载玻片上的灰尘等干扰,将会影响到信号点亮度的精确提取。本文探讨了几种常用的滤波方法,如平滑滤波、顺序滤波等,并选取一种自适应中值滤波的方法去除掉图像背景中那些无规律的噪声干扰。 为了确定每一个信号点的区域,必须对图像的每个信号点进行栅格化处理。通过图像水平投影和垂直投影的方式确定了每个信号点的位置区域,使得在每一个固定大小的区域之内只包含唯一的一个信号点。

📚2 运行结果

 

 

 

 

 

 

 

 

 

 

 

 部分代码:

clear;%清除无关变量
clc;%清空命令行
close all%关闭所有图窗

img1 = imread('芯片载板图片1.jpg');%读取图片
img1_gray = rgb2gray(img1);%将图片转为灰度图

%绘图
figure(1);
imshow(img1);
title('原始的芯片载板图片');


[g2,t2] = edge(img1_gray,'sobel',[],'horizontal');%水平方向
[g3,t3] = edge(img1_gray,'sobel',[],'vertical');%垂直方向
g4 = sqrt(g2.^2 + g3.^2);%梯度
figure(2);
subplot(121);
imshow(img1_gray);
title('grayimage');
subplot(122);
imshow(g4);
title('gradmag');

hy = fspecial('sobel');%sobel算子
hx = hy';
Iy = imfilter(double(img1_gray), hy, 'replicate');%滤波求y方向边缘
Ix = imfilter(double(img1_gray), hx, 'replicate');%滤波求x方向边缘
g = sqrt(Ix.^2 + Iy.^2);%求摸
figure(3);
subplot(121);
imshow(img1_gray);
subplot(122);
imshow(g);

L = watershed(g);%直接应用分水岭算法
Lr = label2rgb(L);%转化为彩色图像
figure(4); 
imshow(Lr) %显示分割后的图像
title('直接应用分水岭算法');


se1 = strel('disk',20);%结构元素为半径为20的圆盘
A = imerode(img1_gray,se1);%灰度图被se1腐蚀
B = imreconstruct(A,img1_gray);%重构开运算
C = imdilate(B,se1);%膨胀
D = imreconstruct(imcomplement(C),imcomplement(B));
D = imcomplement(D);

figure(5);
subplot(121);
imshow(B);
title('腐蚀重建图');
subplot(122);
imshow(D);
title('膨胀重建图');


f = imregionalmax(D);%局部极大值
figure(6);
subplot(121);
imshow(f); %显示重建后局部极大值图像
title('局部极大前景标记');
I2 = img1_gray;
I2(f) = 255;%局部极大值处像素值设为255 
subplot(122);
imshow(I2); %在原图上显示极大值区域
title('原图与前景标记的叠加');
se2 = strel(ones(5,5));%结构元素为5*5的全1矩阵
f2 = imclose(f, se2);%关操作
f3 = imerode(f2, se2);%腐蚀
f4 = bwareaopen(f3, 20);%开操作
I3 = img1_gray;
I3(f4) = 255;%前景处设置为255

bw = im2bw(D, graythresh(D));%OTSU法转化为二值图像
Dis = bwdist(bw);%计算距离
DL = watershed(Dis);%分水岭变换

gradmag2 = imimposemin(g,f4);%置最小值
L = watershed(gradmag2);%分水岭变换
I4 = img1_gray;
I4(imdilate(L == 0, ones(3, 3)) | f4) = 255;%前景及边界处置255

figure(7);
subplot(121);
imshow(I4);%突出前景及边界
title('原图与修改后的前景标记的叠加');
L2 = label2rgb(L, 'jet', 'w', 'shuffle');%转化为伪彩色图像
subplot(122); 
imshow(L2)%显示伪彩色图像
title('伪彩色图像')

figure(8);
subplot(121);
imshow(img1_gray);hold on;
hI = imshow(L2);%在原图上显示伪彩色图像
set(hI, 'AlphaData', 0.3);
title('原图伪彩像');

 xx = L;
 xx(xx==2) = 100;
 xx(xx<10) = 0;
 xx = xx ./ 100;
 yy= B.*xx;

 subplot(122);
 imshow(yy);
 title('分割后的结果');
 
 
 [left_h,left_l,right_h,right_l] = find_loc(xx);%确定四个顶点位置
 gg = [left_h(1),left_l(1),right_l(1),right_h(1)];
 ff = [left_h(2),left_l(2),right_l(2),right_h(2)];
 Bw = roipoly(B,ff,gg);

 img_s = B;
 img_s(Bw==0) = 0;
 img_rec = pt(img_s,left_h,right_h,left_l,right_l);%进行透视变换
 
 figure(9);
 imshow(img_rec);
 title('透视变换后的矩形区域');
 
 [gs,ts] = edge(img_rec,'sobel',0.06,'both');%使用sobel算子
 [gc,tc] = edge(img_rec,'canny',[],'both');%使用canny算子
 figure(10);
 subplot(121);
 imshow(gs);
 title('sobel算子');
 subplot(122);
 imshow(gc);
 title('canny算子');
 
 se2 = strel('disk',2);
 img_se = imdilate(gs,se2);%膨胀
 se3 = strel('disk',1);
 img_open = imopen(~img_se,se3);%开操作
 img_open = img_open(:,2:end-1);
 figure(11);
 imshow(img_open);
 title('完整芯片载板处理结果');
 
 dis = 9;%扫描模板为9*9
 th = 50;%阈值为50
 [d,count,img_res] = scan(img_open,dis,th);%对图片进行遍历,确定芯片个数及位置
 figure(12);
 imshow(img_res);
 title('识别出的芯片结果');
 

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]王成优,周晓,张遥,郭春生.培养科研能力的“数字图像处理”课程实验教学改革研究[J].工业和信息化教育,2023(01):36-39.

[2]欧冰,杨晶晶.数字图像处理技术现状与展望[J].中国新通信,2023,25(01):76-78.

[3]赵俊梅,林祥德.DSP芯片在数字图像处理中的应用[J].滁州学院学报,2008(03):55-57.

🌈4 Matlab代码实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值