"cleaning" a horizontal line removal code for object detection.
3 次查看(过去 30 天)
显示 更早的评论
I have a code that removes horizontal lines in an image but the problem is that it removes some of the lines that are needed for object detection. Any ide on how to make my output "cleaner"?
here is my code:
A=imread('sheetmusic.jpg');
B=rgb2gray(A);
C=double(B);
for i=1:size(C,1)-2
for j=1:size(C,2)-2
%Sobel mask for x-direction:
Gx=( ( 2*C(i+2,j+1)+C(i+2,j)+C(i+2,j+2) ) - ( 2*C(i,j+1)+C(i,j)+C(i,j+2) ) );
%Sobel mask for y-direction:
%Gy=((2*C(i+1,j+2)+C(i,j+2)+C(i+2,j+2))-(2*C(i+1,j)+C(i,j)+C(i+2,j)));
%The gradient of the image
if(Gx~=0)
B(i,j)=abs(Gx);
end
end
end
figure,imshow(B); title('Sobel gradient');
and here is my input image:
and here is my output:
0 个评论
采纳的回答
Brian Hart
2018-12-22
Hi Janrex,
For a nice clean image like this, there's a very simple solution. Just compute a row sum; rows with staff lines have a lower sum:
tmp=sum(C,2);
figure;plot(tmp)
Now set those rows to white:
ind=find(tmp<1E5)
C(ind,:)=255;
figure;imagesc(C);axis image;
(The downsampled image above doesn't look great; looks better for real)
If the white lines through the notes cause issues, you could do some morphology to close them (dilate then erode).
5 个评论
更多回答(1 个)
Image Analyst
2018-12-22
Ditch that simplistic algorithm and go for one of the more robust algorithms published here: Algorithms on Musical Notation. I'm sure you'll find something much better.
2 个评论
Image Analyst
2018-12-28
OK. Good for them. I'm sure they will learn a lot doing that. Not sure if any of the published papers I gave the link to do it that way since CNN's been around only for about 6 years or so. You might get a publication out of it if it's not been done before. Maybe you could at least upload it to the File Exchange.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Convert Image Type 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!