⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matlab.txt

📁 编程实现图象分割
💻 TXT
字号:

   
 
   

I=imread('brand02.jpg');
HS_I=double(I);
tic
G=gradient(HS_I); % 计算梯度值
[y,x]=size(I);
T=60;
%%%%%%% 商标文字分割 %%%%%%%%%%
n=30;
GY=zeros(y,1); 
for j=1:y 
for i=1:x-n
Max=max(G(j,i:i+n));
Min=min(G(j,i:i+n));
MGD(j,i)=Max-Min; % 计算最大梯度差
if (MGD(j,i)>T) 
GY(j,1)=GY(j,1)+1; % MGD大于阈值的次数统计
end 
end
end 
[temp MaxY]=max(GY);
PY1=MaxY;
while ((GY(PY1,1)>=n)&&(PY1>1)) % 次数阈值检测
PY1=PY1-1;
end 
PY2=MaxY;
while ((GY(PY2,1)>=n)&&(PY2<y))
PY2=PY2+1;
end
%%%%%%%%%% X 方向的分割 %%%%%%%%%%%
n=15;
GX=zeros(1,x);
for i=1:x
for j=1:y-n
Max=max(G(j:j+n,i));
Min=min(G(j:j+n,i));
MGD(j,i)=Max-Min;
if (MGD(j,i)>T)
GX(1,i)=GX(1,i)+1;
end
end
end
PX1=1;
while (((GX(1,PX1)<=n)||(GX(1,PX1+1)<=n))&&(PX1<x)) % 列方向保证同时相邻的两列满足次数要求
PX1=PX1+1;
end 
PX2=x;
while (((GX(1,PX2)<=n)||(GX(1,PX2-1)<=n))&&(PX2>PX1))
PX2=PX2-1;
end 

HS_I=uint8(HS_I);
IY=HS_I(PY1:PY2,PX1:PX2);
t=toc
%%%%%%%%%%%%%%%%%%%%%%%%%%
figure,imshow(HS_I);
figure,plot(MGD(40,:));grid
figure,plot(MGD(140,:));grid
figure,imshow(IY);
--------------------------------------
程序如上,我用一张800*600的JPG运行程序得到800*600个整数,但是不理解这些整数表示什么值.
请问这个程序的具体功能是什么?越详细越好。
请问这个程序运行后的到的整数具体表示的值是什么?
感激不尽。

 
 
 
 回复人:dylanwolf() ( ) 信誉:100 2006-6-6 19:23:00 得分:0 
 
 
? 
第一部分计算列梯度差,计算每个像素的列方向一定范围内(n)最大值和最小值的差距,统计该差值超过某一设定域值T的像素的个数,并将该统计个数存在 GY 向量。 向量里头的每个值 GY(y) 代表该行的所有像素里头的最大列梯度差。程序然后找到 GY 的最大值,[temp MaxY]=max(GY); 以该行为中心,找到相邻的n行。但是由于上下n邻有可能超出图像范围,所以程序用一个循环找出该相邻行得上下限,PY1 and PY2.

类似,第二部分计算行梯度差,计算每个像素的行方向一定范围内(n)最大值和最小值的差距,统计该差值超过某一设定域值T的像素的个数,并存在 GX 向量。 向量里头的每个值 GX(x) 代表该列的所有像素里头的最大行梯度差。程序然后用循环找出相邻两列的统计个数同时超过设定值n的列的上下限,PX1 and PX2.

最后的输出,HS_I: 原始输入图像,IY: 找到的那块图像区域(PY1行到PY2行, PX1列到PX2列)。MGD应该是每个像素行方向的梯度差。

给我感觉这个程序是分割用的。
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -