旋轉見下圖:檢測文本的角度在水平方向圖像和MATLAB
正如你可以在圖片中看到的90度角度旋轉的書面文字,我想旋轉只有文字是水平的。不管怎麼角度它旋轉我希望把它水平如下:
我不想在旋轉的完整的圖像。我希望文本只有有界,文本旋轉的角度被測量,然後旋轉該角度使其水平。
你能否建議我這樣做,然後在文本上貼上一個橢圓?
謝謝。
旋轉見下圖:檢測文本的角度在水平方向圖像和MATLAB
正如你可以在圖片中看到的90度角度旋轉的書面文字,我想旋轉只有文字是水平的。不管怎麼角度它旋轉我希望把它水平如下:
我不想在旋轉的完整的圖像。我希望文本只有有界,文本旋轉的角度被測量,然後旋轉該角度使其水平。
你能否建議我這樣做,然後在文本上貼上一個橢圓?
謝謝。
首先,我們發現所有的暗像素的xy座標
bw = imread('http://i.imgur.com/0LxC6bd.png');
bw = min(bw, [], 3) < 50 ; % dark pixels - intensity lower than 50
[y x] = find(bw); % note that find returns row-col coordinates.
計算文本的協方差矩陣座標
mx = mean(x);
my = mean(y);
C = [ mean((x-mx).^2), mean((x-mx).*(y-my));...
mean((x-mx).*(y-my)) mean((y-my).^2) ];
你可以從橢圓的取向本徵矢量和本徵值爲C
:
[V D] = eig(C);
figure; imshow(bw); hold on;
quiver(mx([1 1]), my([1 1]), (V(1,:)*D), (V(2,:)*D), .05);
個
綜觀本徵向量和本徵值:
V =
-0.9979 -0.0643
-0.0643 0.9979
D =
1.0e+003 *
0.1001 0
0 1.3652
可以看到,本徵向量(的V
列)大致指向-X
方向(第一列)和Y
方向(第二柱)。檢查特徵值(對角線爲D
),可以看到第二個特徵值比第一個特徵值大得多 - 這是橢圓的長軸。現在可以收回橢圓的定向:
[~, mxi] = max(diag(D)); % find major axis index: largest eigen-value
從相應的本徵矢量
or = atan2(V(2,mxi), V(1,mxi)) * 180/pi ; % convert to degrees for readability
or =
93.6869
恢復的角度正如可以看到的橢圓的長軸是幾乎90度關閉地平線。 可以旋轉圖像背面
imrotate(bw, -or);
繪製橢圓給定協方差矩陣:
th = linspace(0, 2*pi, 500);
xy = [cos(th);sin(th)];
RR = chol(C); % cholesky decomposition
exy = xy'*RR; %//'
figure;imshow(bw); hold on;
plot(2*exy(:,1)+mx, 2*exy(:,2)+my, 'r', 'LineWidth', 2);
我用這個解決方案:
bw = im2;
bw = sum((1-im2).^2, 3) > .5;
%bw = min(bw, [], 3) < 50 ; % dark pixels - intensity lower than 50
[y x] = find(bw); % note that find returns row-col coordinates.
mx = mean(x);
my = mean(y);
C = [ mean((x-mx).^2), mean((x-mx).*(y-my));...
mean((x-mx).*(y-my)) mean((y-my).^2) ];
[V D] = eig(C);
quiver(mx([1 1]), my([1 1]), (V(1,:)*D), (V(2,:)*D), .05);
[~,mxi] = max(diag(D)); % find major axis index: largest eigen-value
or = atan2(V(2,mxi), V(1,mxi)) * 180/pi ; % convert to degrees for readability
rotate = imrotate(im2, or-180);
axes(handles.axes2);
imshow(rotate);
set(handles.text3, 'String',or-180);
類似的任務:http://stackoverflow.com/questions/32227347/how-can-i-detect-the-dimensions-of-an-object-under-an-angle-in這個圖片在m/32228759#32228759 – Shai