Komple Segmentasyon kodu: Ben kelime görüntüler için bir karakter segmentasyon işlemi yapmak için matlab çalışma içine görüntüleri yüklediğinizTasarruf Segmentasyon Sonucu - Matlab Arapça OCR
% Preprocessing + Segmentation
% // Original Code of Segmentation by Soumyadeep Sinha with several modification by Ana//
% Saving each single segmented character as one file
function [s] = seg (a)
myFolder = 'D:\1. Thesis FINISH!!!\Simulasi I\Segmented Images';
% a = imread ('adv1.png');
% Binarization %
level = graythresh (a);
b = im2bw (a, level);
% Complement %
c = imcomplement (b);
% Morphological Operation - Dilation %
se = strel ('square', 1);
% se = strel('rectangle', [1 2]);
r = imerode(c, se);
i=padarray(r,[0 10]);
% i=padarray(c,[0 10]);
% Morphological Operation - Dilation %
% se = strel('rectangle', [1 2]);
% se = strel ('square', 1);
% i = imerode(r, se);
%VP
verticalProjection = sum(i, 1);
set(gcf, 'Name', 'Segmentation Trial', 'NumberTitle', 'Off')
subplot(2, 2, 1);imshow(i);
subplot(2,2,3);
plot(verticalProjection, 'b-');
grid on;
t = verticalProjection;
t(t==0) = inf;
mayukh=min(t)
% 0 where there is background, 1 where there are letters
letterLocations = verticalProjection > mayukh;
% Find Rising and falling edges
d = diff(letterLocations);
startingColumns = find(d>0);
endingColumns = find(d<0);
% Extract each region
y=1;
for k = 1 : length(startingColumns)
% Get sub image of just one character...
subImage = i(:, startingColumns(k):endingColumns(k));
% im = subImage;
s = subImage;
% figure, imshow (s);
% Normalization %
[p] = normalization (s);
% se = strel ('square', 1);
% se = strel('rectangle', [2 1]);
% im = imdilate(p, se);
% Morphological Operation - Thinning %
im = bwmorph(p,'thin',Inf);
% Save %
[L,num] = bwlabel(im);
for z= 1 : num
bw= ismember(L, z);
% Construct filename for this particular image.
baseFileName = sprintf('data.%d.png', y);
y=y+1;
% Prepend the folder to make the full file name.
fullFileName = fullfile(myFolder, baseFileName);
% Do the write to disk.
imwrite(bw, fullFileName);
subplot(2,2,4);
pause(1);
imshow(bw);
end
% y=y+1;
end;
s = (im);
- . Örn: veri (1) .png, veri (2) .png vb. Bölme işlemi, her parçalanmış karakter için çıktı olarak çoklu görüntü verecektir. Word görüntüleri çeşitli miktarda karakter içerir, bu yüzden çıktı da değişir. Örneğin, görüntü = data (1) .png için bölümlenmiş sonuç çıktısı veri (1) _1.png, veri (1) _2.png, veri (1) _3.png ve veri (2) .png haline gelir. (2) _1.png, veri (2) _2.png vb.
Kelime görüntüleri
Son zamanlarda, elle yaptım, ama veri seti daha büyük olacak ve o kadar tek görüntüleri biri için segmentasyon çalıştırmak için zaman israf. Herhangi bir öneri var mı, basit ve daha etkili hale getirmek için nasıl yapmalıyım? Her parçalanmış karakter için sonucu alın (sırayla).% Save %
[L,num] = bwlabel(im);
for z= 1 : num
bw= ismember(L, z);
% Construct filename for this particular image.
% Change basefilename for each word images %
baseFileName = sprintf('data (1).%d.png', y);
y=y+1;
% Prepend the folder to make the full file name.
fullFileName = fullfile(myFolder, baseFileName);
% Do the write to disk.
imwrite(bw, fullFileName);
subplot(2,2,4);
pause(1);
imshow(bw);end
Bu kodu kullandıktan sonra, iyi bir sonuç oluşturmak, ama sadece bir veri için, bir sonraki veri son verilerini değiştirecektir. Bu yüzden, son zamanlarda, her kelime görüntüsü için, bölümlendirme işlemini teker teker yürütür ve uygun bir sonuç elde etmek için bu bölümü değiştiririm. Sprintf ('data (1).% D.png', y) sprintf olmak için ('data (2).% D.png', y); ve bunun gibi. ( ) Umarım, otomatik olarak alabilirim.
Herhangi bir yardım çok takdir edilecektir.
Sprintf ('data (% d).% D.png', imageIdx, y = y + 1) – BH85
Eğer bir sakınca yoksa, kod hakkında daha fazla bilgi verir misiniz? @ BH85 Sprintf ('veri (% d).% D.png', imageIdx, y = y + 1)? –
klasöründen görüntüler okunuyorsanız: İlk adım dosyaların isimlerini almaktır. İkinci adım, bu dosyalar üzerinde tek tek yinelemektir. genellikle döngü için kullanarak yineliyoruz. Bu for döngüsünün değişkeni resim indeksidir. files_Info = dir ('C: \ ...Görüntülerinizin olduğu yerde); size (files_Info, 1) bu dizindeki dosya sayısıdır ('.' ve '..' dahil olmak üzere). imageIdx = 1 için: size (files_Info, 1), 'olup olmadığını kontrol edin.' ya da '..'; işlem adımı için gidin ..... son – BH85