Files
cDNA-image-processing/参考资料/NewGridAndCV/contour_bw.m
T
Serendipity b8a8ff2bc6 feat: cDNA微阵列图像处理作业 - Python实现
实现内容:
- 网格划分:投影分析 + 自相关估周期 + 白顶帽去背景 + 质心提取
- 三种阈值分割:人工阈值、Otsu自动阈值、迭代阈值
- TV去噪(Chambolle投影算法)
- 后处理:去小连通域 + 保留最大连通域
- 完整可视化:网格叠加、阈值对比、收敛曲线、分割结果

参考MATLAB代码:NewGridAndCV/demo_GriddingAndCV.m
2026-05-06 19:41:26 +08:00

48 lines
1.0 KiB
Matlab

%%%%下面检测二值图的轮廓:如果与四邻域的差中有一个为1,则为内点,否则为外点.
function output=contour_bw(input)
%input=imread('bw_image.bmp');
%%输入图像矩阵:input
%%输出图像矩阵:在边界处为255,内部为0
% input=Lnew_out;
[r,c]=size(input);
output=255*zeros(r,c);
%改动过
% global num;
global r_avg;
r_avg=0;
global g_avg;
g_avg=0;
global b_avg;
b_avg=0;
% global rect_rgb_01;%最初切割原图像
Reb_dot=0;
for i=2:r-1
for j=2:c-1
if (input(i,j)-input(i,j+1)==1 || input(i,j)-input(i,j-1)==1 || input(i,j)-input(i+1,j)==1 || input(i,j)-input(i-1,j)==1)
output(i,j)=255;
% r_avg=r_avg+double(rect_rgb_01(i,j,1));
% g_avg=g_avg+double(rect_rgb_01(i,j,2));
% b_avg=b_avg+double(rect_rgb_01(i,j,3));
% num=num+1;
Reb_dot=Reb_dot+1;
else
output(i,j)=0;
end
end
Reb_dot
end
% r_avg=uint8(r_avg/num);
% g_avg=uint8(g_avg/num);
% b_avg=uint8(b_avg/num);