字母提取

本案例使用图像处理算法实现字母i提取,其他其母提取也可以参考该算法进行修改后实现。

图像处理主要步骤:1.读入文本图像 2.提取i垂直模版 3.提取i垂直模版 4.通过数学形态学运算提取垂直i  5. 通过数学形态学运算提取水平i  6.通过图像融合算法提取所有的i字母

完整代码如下:

clear all;
close all;
clc ;
%读取text.png图像
I=imread('text.png');
imshow(I);
img=~I;%像素值求反
imshow(img);
% 提取i模版 和倒i模版
i = img(30:45,112:116);
figure,imshow(i);
i1 = img(193:197,155:170);
figure,imshow(i1);

% 使用腐蚀操作对原始图像和两个模板进行处理
fe_i=imerode(img,i); 
fe_i1=imerode(img,i1); 

% 模版进行求反操作,得到两个新的模板
ii= ~i;
figure,imshow(ii);
ii1 = ~i1;
figure,imshow(ii1);

% 对求反后的图像和求反后的模板进行腐蚀操作
img_i=I;
fe_ii = imerode(img_i,ii);
img_i1=~img;
fe_ii1 = imerode(img_i1,ii1);

Aim_i= fe_i & fe_ii; %逐像素的与运算
Aim_i1= fe_i1 & fe_ii1; 

% 统计i的个数
num_i = sum(Aim_i(:));
num_i1 = sum(Aim_i1(:));
num_i_all = num_i + num_i1;
disp(['i的总个数:', num2str(num_i_all)]);

%% 图像重构
% 使用膨胀操作对图像'Aim_i'和'Aim_i1'进行处理
img_i=imdilate(Aim_i,ii);
figure,imshow(img_i)
img_i1=imdilate(Aim_i1,ii1);
 figure,imshow(img_i1),title('水平i');

% 将图像'img_i'和'img_i1'进行融合
fused_img_i = imfuse(img_i, img_i1, 'blend');%用于将两幅图像进行融合,以产生一幅新的图像
fused_img_i_adjusted = imadjust(fused_img_i, [], [], 0.2); %imfuse - Composite of two images
figure,imshow(fused_img_i_adjusted),title('水平方向i和垂直i合成');
figure,
subplot(2,3,1),imshow(I),title('读入二值图像');
subplot(2,3,2),imshow(i),title('提取i垂直模版');
subplot(2,3,3),imshow(i1),title('提取i水平模版');
subplot(2,3,4),imshow(img_i),title('数学形态学运算提取垂直i');
subplot(2,3,5),imshow(img_i1),title('数学形态学运算提取水平i');
subplot(2,3,6),imshow(fused_img_i_adjusted),title('融合图像-水平方向i和垂直i合成');

-------------------------------------------------------------------------------------------------------------------------------------------代码测试原图:

代码运行结果图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值