我有一个包含文字的图片,我想从图片中剪切每个字母。我如何使用MATLAB实现这一目标?
答案 0 :(得分:2)
最简单的方法是测试颜色:
找出字母的颜色。
假设这是你的图像,包含一个用彩色5写的字母T:
myImage = round(4*rand(6));
myImage(1:2,:) = 5; %Drawing the top bar of the T
myImage(:,3:4) = 5; %Drawing the leg of the t
myColor = 5;
现在只保留字母(/字母):
myImage(myImage~=myColor) = NaN
现在您可以使用
绘制它surf(myImage)
将其扩展到颜色范围(或一组RGB颜色,取决于图像的格式)并不太难。
答案 1 :(得分:2)
如果您有工具箱,则可以快速识别图像中的每个单独字母。
从灰度图像开始,您必须使用
找到分割阈值level = graythresh(Img);
然后用
将图像转换为二进制Img = im2bw(Img,level);
用
Cc = bwconncomp(Img);
您将获得一个结构,其中包含其字段中每个已识别组件的线性索引
Cc.PixelIdxList
请参阅这些功能的文档,以根据您的需要调整细分。
您必须自己实现连接的组件算法。
来自Matlab文档:
>The basic steps in finding the connected components are:
>
>1. Search for the next unlabeled pixel, p.
>2. Use a flood-fill algorithm to label all the pixels in the connected component containing p.
>3. Repeat steps 1 and 2 until all the pixels are labeled.