Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中的行和列拆分_Matlab_Image Processing_Computer Vision_Image Segmentation - Fatal编程技术网

matlab中的行和列拆分

matlab中的行和列拆分,matlab,image-processing,computer-vision,image-segmentation,Matlab,Image Processing,Computer Vision,Image Segmentation,我有这张图片(附件),我想分割数量栏和价格栏,但我不知道怎么分割?!用什么函数来帮助我呢 任何帮助都将不胜感激。谢谢 利用输入图像的规则结构,您可以执行以下操作: img = imread('http://i.stack.imgur.com/SuKT2.jpg'); %//read image bw = sum(img,3) < 10; %//convert to binary mask 现在我们可以忽略前8行(页眉)和最后两行页脚 sbw = lbw > 8 & lbw

我有这张图片(附件),我想分割数量栏和价格栏,但我不知道怎么分割?!用什么函数来帮助我呢

任何帮助都将不胜感激。谢谢


利用输入图像的规则结构,您可以执行以下操作:

img = imread('http://i.stack.imgur.com/SuKT2.jpg'); %//read image
bw = sum(img,3) < 10;  %//convert to binary mask
现在我们可以忽略前8行(页眉)和最后两行页脚

sbw = lbw > 8 & lbw < max(lines)- 2; %// select only the relevant lines
可视化生成的边界框

figure;imshow( img, 'border','tight' );hold on; 
rectangle('Position', st(1).BoundingBox, 'EdgeColor','r','LineWidth',2);
rectangle('Position', st(2).BoundingBox, 'EdgeColor','r','LineWidth',2);    
导致

给定边界框,它相当容易裁剪

col1 = imcrop( img, st(1).BoundingBox ); %// crop the description of the products
col2 = imcrop( img, st(2).BoundingBox ); %// crop the prices

利用输入图像的规则结构,您可以执行以下操作:

img = imread('http://i.stack.imgur.com/SuKT2.jpg'); %//read image
bw = sum(img,3) < 10;  %//convert to binary mask
现在我们可以忽略前8行(页眉)和最后两行页脚

sbw = lbw > 8 & lbw < max(lines)- 2; %// select only the relevant lines
可视化生成的边界框

figure;imshow( img, 'border','tight' );hold on; 
rectangle('Position', st(1).BoundingBox, 'EdgeColor','r','LineWidth',2);
rectangle('Position', st(2).BoundingBox, 'EdgeColor','r','LineWidth',2);    
导致

给定边界框,它相当容易裁剪

col1 = imcrop( img, st(1).BoundingBox ); %// crop the description of the products
col2 = imcrop( img, st(2).BoundingBox ); %// crop the prices

利用输入图像的规则结构,您可以执行以下操作:

img = imread('http://i.stack.imgur.com/SuKT2.jpg'); %//read image
bw = sum(img,3) < 10;  %//convert to binary mask
现在我们可以忽略前8行(页眉)和最后两行页脚

sbw = lbw > 8 & lbw < max(lines)- 2; %// select only the relevant lines
可视化生成的边界框

figure;imshow( img, 'border','tight' );hold on; 
rectangle('Position', st(1).BoundingBox, 'EdgeColor','r','LineWidth',2);
rectangle('Position', st(2).BoundingBox, 'EdgeColor','r','LineWidth',2);    
导致

给定边界框,它相当容易裁剪

col1 = imcrop( img, st(1).BoundingBox ); %// crop the description of the products
col2 = imcrop( img, st(2).BoundingBox ); %// crop the prices

利用输入图像的规则结构,您可以执行以下操作:

img = imread('http://i.stack.imgur.com/SuKT2.jpg'); %//read image
bw = sum(img,3) < 10;  %//convert to binary mask
现在我们可以忽略前8行(页眉)和最后两行页脚

sbw = lbw > 8 & lbw < max(lines)- 2; %// select only the relevant lines
可视化生成的边界框

figure;imshow( img, 'border','tight' );hold on; 
rectangle('Position', st(1).BoundingBox, 'EdgeColor','r','LineWidth',2);
rectangle('Position', st(2).BoundingBox, 'EdgeColor','r','LineWidth',2);    
导致

给定边界框,它相当容易裁剪

col1 = imcrop( img, st(1).BoundingBox ); %// crop the description of the products
col2 = imcrop( img, st(2).BoundingBox ); %// crop the prices

是否尝试?是否确实要创建两个新图像或从图像中提取数据?是否尝试?是否确实要创建两个新图像或从图像中提取数据?是否尝试?是否确实要创建两个新图像或从图像中提取数据?是否尝试?你真的想创建两个新图像还是想从图像中提取数据?@Shai谢谢你的帮助,我很感激,但有些事情我无法理解,比如:1-lbw=bsxfun(@times,single(bw),line);为什么我要做这一步?!2-尽管阈值=4可以给出相同的结果,但为什么选择10作为阈值@user3903128(1)请在调试模式下运行代码,可视化
bw
,然后检查
bsxfun
的乘法结果-此操作基本上为每个文本行提供不同的标签。(2) 我任意选择了阈值10,也可能是4也一样好。@shai这就是我所做的(在调试模式下查看整个代码),但我无法理解它的逻辑。如果你能给我解释一下,我将不胜感激me@user3903128
是一个1D(不是2D)向量,用于计算每个图像行的“文本”像素数。文本行之间的图像行具有零“文本”像素,因此它们的
值为零。为了标记与同一文本行对应的所有图像行,我使用了
bwlabel
命令。你可以
图形;绘图(总和(bw,2)>1);等等图(线)
查看每个图像行如何与不同的文本行关联。要将此1D表示转换为所有文本像素的标签,我使用
bsxfun
将其与掩码
bw
的每一列相乘,得到一个掩码,其中每一文本行都有不同的标签。@谢谢您的解释,但您能解释一下这一行吗:col=bwlabel(imfilter(single)(sum(sbw,1)<1),one(1,15)/15、“对称”、“相同”)<.9);我真的很感激你对我的耐心me@Shai谢谢你的帮助,我很感激,但是有些事情我不能理解,比如:1-lbw=bsxfun(@times,single(bw),line);为什么我要做这一步?!2-尽管阈值=4可以给出相同的结果,但为什么选择10作为阈值@user3903128(1)请在调试模式下运行代码,可视化
bw
,然后检查
bsxfun
的乘法结果-此操作基本上为每个文本行提供不同的标签。(2) 我任意选择了阈值10,也可能是4也一样好。@shai这就是我所做的(在调试模式下查看整个代码),但我无法理解它的逻辑。如果你能给我解释一下,我将不胜感激me@user3903128
是一个1D(不是2D)向量,用于计算每个图像行的“文本”像素数。文本行之间的图像行具有零“文本”像素,因此它们的
值为零。为了标记与同一文本行对应的所有图像行,我使用了
bwlabel
命令。你可以
图形;绘图(总和(bw,2)>1);等等图(线)
查看每个图像行如何与不同的文本行关联。要将此1D表示转换为所有文本像素的标签,我使用
bsxfun
将其与掩码
bw
的每一列相乘,得到一个掩码,其中每一文本行都有不同的标签。@谢谢您的解释,但您能解释一下这一行吗:col=bwlabel(imfilter(single)(sum(sbw,1)<1),one(1,15)/15、“对称”、“相同”)<.9);我真的很感激你对我的耐心me@Shai谢谢你的帮助,我很感激,但是有些事情我不能理解,比如:1-lbw=bsxfun(@times,single(bw),line);为什么我要做这一步?!2-尽管阈值=4可以给出相同的结果,但为什么选择10作为阈值@user3903128(1)请在调试模式下运行代码,可视化
bw
,然后检查
bsxfun
的乘法结果-此操作基本上为每个文本行提供不同的标签。(2) 我任意选择了阈值10,也可能是4也一样好。@shai这就是我所做的(在调试模式下查看整个代码),但我无法理解它的逻辑。如果你能给我解释一下,我将不胜感激