matlab 图像转化成字符图像

来源:互联网 发布:苹果a1507网络制式 编辑:程序博客网 时间:2024/06/15 05:46
%读入图像bw=imread('a.jpg');bw=rgb2gray(bw);[m,n]=size(bw);for i=1:m    forj=1:n       if(bw(i,j)>70)           bw(i,j)=0;       else%              bw(i,j) =mod( mod(bw(i,j),20),10);             bw(i,j) =mod(bw(i,j),10);       end    endend;% imshow(bw);%输出图像file=fopen('a.txt','w');for i=1:m    forj=1:n       if(bw(i,j)>0)           fprintf(file,'%d',bw(i,j));       else           fprintf(file,' ');       end    end   fprintf(file,'\n');end;fclose(file);



简单的将图像转化成灰度图像  然后筛掉一些背景   剩下像素mod10 显示,对于区分度大的图片做出来的效果还是比较好的,至于区分度小的 这样做就不适合了
最后在notepad上打开  然后缩小到最小 就可以查看整体效果了






上面代码是我之前做的版本,之后我又做了改进
bw=imread('./图片/g.jpg');bw=rgb2gray(bw);[m,n]=size(bw);round =10;for i=1:m    for j=1:n      bw(i,j) = bw(i,j)+round/2-mod(bw(i,j)+round/2,round);    endend% for i=1:m%     for j=1:n%         if(bw(i,j)>135)%             bw(i,j)=0;%         else% %               bw(i,j) =mod( mod(bw(i,j),20),10);% %                bw(i,j)=mod( bw(i,j),10);%               bw(i,j) =mod(bw(i,j)/10,10);%         end%     end% end;% imshow(bw);file=fopen('./txt/g.txt','w');for i=1:m    for j=1:n        fprintf(file,'%c',to_text(bw(i,j)));%         if(bw(i,j)>0)%             fprintf(file,'%d',bw(i,j));%         else%             fprintf(file,' ');%         end    end    fprintf(file,'\n');end;fclose(file);

接下来是to_text函数

function [s]  = to_text( g )    charactersARRAY = 'M80V1;:*-. ';    count = size(charactersARRAY);    count=uint8(count(2));    span =uint8(255 / count);    cidx =uint8( g / span);    if cidx > count-1        cidx = count- 1;    end;    s=charactersARRAY(cidx+1);


程序的思路是处理一下初始点,然后对剩下的点做处理
这里处理初始点的方法与多种,根据我需处理的图像的条件,我选择的方案是对齐,
之后是转化,用查表的方式将对应灰度值幻化成字符,这个字符表是经验总结出来的  画出来的效果也比较好





0 0
原创粉丝点击