"cleaning" a horizontal line removal code for object detection.

1 vue (au cours des 30 derniers jours)
Janrex Pensader
Janrex Pensader le 22 Déc 2018
Commenté : Image Analyst le 15 Jan 2019
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:sheetmusic.jpg
and here is my output:
Capture.PNG

Réponse acceptée

Brian Hart
Brian Hart le 22 Déc 2018
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)
untitled.bmp
Now set those rows to white:
ind=find(tmp<1E5)
C(ind,:)=255;
figure;imagesc(C);axis image;
untitled.bmp
(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 commentaires
Janrex Pensader
Janrex Pensader le 15 Jan 2019
I have a follow up question. what if i have different images with different sizes, their row sum would be different and so applying a sum<1e5 in my code would be bad right?
Image Analyst
Image Analyst le 15 Jan 2019
Correct. You'd have to adjust it for each size image.

Connectez-vous pour commenter.

Plus de réponses (1)

Image Analyst
Image Analyst le 22 Déc 2018
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 commentaires
Janrex Pensader
Janrex Pensader le 28 Déc 2018
my group plans to make an OMR with the CNN architecture and re are not allowed to use libraries.
Image Analyst
Image Analyst le 28 Déc 2018
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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Image Processing and Computer Vision dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by