Nhận xét và đánh giá, so sánh

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng xử lý ảnh đếm các đối tượng có ảnh chạm nhau (Trang 65 - 76)

Đầu cây thép bị thụt vào

Trường hợp đặc biệt: trường hợp hai mũi tên 1 và 2 (hình 2.32 trang 39 mục 2.5.2) Khi đó chúng ta cần kết hợp watershed mới xử lý được nếu cứ xử lý theo hình thái học định hướng lại có xu hướng khoét sâu vào đối tượng mà không có hiệu quả như các trường hợp khác.

Hướng phát triển: Đã có các nghiên cứu về cứng hóa các thuật toán xử lý ảnh. Do vậy việc nghiên cứu hoàn thiện phương pháp đề xuất sau đó thực hiện thuật toán này trên FPGA để có thể có một thiết bị cầm tay sử dụng chuyên dụng cho đếm thép bó hoặc các loại ảnh đầu bó tương tự là hoàn toàn khả thi.

KẾT LUẬN CHƯƠNG 3

Chương 3 thực hiện việc tiến hành thực nghiệm để tách các cây thép trong ảnh đầu bó thép để thực hiện quá trình đếm. Với loại thép tròn do tính đồng nhất của chúng nên các ảnh đầu bó khi thực hiện tách và đếm tương đối dễ dàng khi sử dụng hình thái học kinh điển. Với ảnh đầu bó cây thép vằn phương pháp hình thái học có định hướng sẽ rất hữu ích khi tách các đối tượng trong ảnh.

KẾT LUẬN

Phương pháp đếm số đối tượng qua ảnh được áp dụng nhiều trong cuộc sống và nhiều khi là phương pháp duy nhất để thực hiện việc đếm. Khó khăn lớn trong việc đếm qua ảnh là trong một số trường hợp ảnh của các đối tượng này dính với nhau hoặc chồng lấn lên nhau. Luận văn chỉ khảo sát trong trường hợp ảnh các đối tượng dính nhau. Để tách các đối tượng dính nhau phương pháp hình thái học co ảnh đã được áp dụng. Tuy nhiên trong nhiều trường hợp không thể áp dụng được phương pháp này vì khi thực hiện pháp co ảnh qua mỗi lần thực hiện diện tích của đối tượng (hoặc nhóm đối tượng) sẽ bị giảm đi có những khi giảm đến 0 vẫn chưa tách được. Trong trường hợp này thực hiện hình thái học là phương pháp rất hữu ích.

Trong thời gian thực hiện luận văn em đã hệ thống lại được các kiến thức cơ bản về xử lý ảnh và nghiên cứu thêm được một số nghiên cứu của các giả về hình thái học gradient, watersheed. Thực nghiệm được thực hiện với một trường hợp cụ thể trong công nghiệp là đếm số cây thép qua ảnh đầu bó thép. Em xin cảm ơn các thày, cô giáo trong Khoa Công nghệ thông tin trường đại học Công nghệ Thông tin và Truyền thông Đại học Thái Nguyên đã tận tình trong quá trình truyền đạt kiến thức. Cảm ơn thày giáo hướng dẫn TS Phạm Đức Long đã giải thích, giúp đỡ em trong quá trình thực hiện luận văn.

HƯỚNG PHÁT TRIỂN

Ứng dụng kỹ thuật xử lý ảnh trong cuộc sống nói chung và trong sản xuất công nghiệp nói chung là một hướng nghiên cứu ứng dụng có nhiều tiếm năng. Những phát triển của em có thể tập trung vào:

 Xây dựng thuật toán khắc phục trường hợp hình 2.32

 Xây dựng các mạch phát hiện lỗi ví dụ mạch phá hiện lỗi trong các bản mạch linh kiện trên dây chuyền sản xuất

 Nghiên cứu cứng hóa các chương trình xử lý ảnh; khi đó các chương trình xử lý ảnh sẽ tách rời khỏi máy tính và hoạt động ổn định hơn, đáp ứng được trong các môi trường khắc nghiệt như công nghiệp, chiến tranh .

Qua quá trình thực hiện luận văn mặc dù đã có nhiều cố gắng nhưng do năng lực còn có hạn chế và lĩnh vực nghiên cứu yêu cầu kiến thức rộng nên trong luận văn của em có thể còn có những khiếm khuyết. Em rất mong nhận được sự chỉ bảo, giúp đỡ của các thày cô giáo. Em xin chân thành cảm ơn.

Thái Nguyên Ngày 01 tháng 10 năm 2020 HỌC VIÊN

TÀI LIỆU THAM KHẢO

[1] Amruta Pandit, Jyoti Rangole, Literature Review on Object Counting using Image Processing Techniques, International Journal of Advanced Research in

Electrical, Electronics and Instrumentation Engineering, Vol. 3, Issue 4, April 2014. [2] Sanaullah Khan, Aamir Khan, Faisal Saleh Khattak, Arslan Naseem, An Accurate and Cost Effective Approach to Blood Cell Count, International Journal of

Computer Applications (0975 – 8887) Volume 50 – No.1, July 2012.

[3] Jeydeo K.Dharpure, Madhukar B.Potdar, Counting Objects using Homogeneous

Connected Components, International Jourpplications , Volume 63 – No.21,

February 2013.

[4] Pham Duc Long, Construcing hardwave to Count Number of Steel Bar in the Steel Bunches by Image Processing, TNU Journal of Science and Technology, 6-

2018.

[5] Jos B.T.M. Roerdink, Arnold Meijster, The Watershed Transform: Definitions, Algorithms and Parallelization Strategies, IOS Press, Fundamenta Informaticae 41,

187–228, 2001.

[6] Amandeep Kaur, Aayushi, Image Segmentation Using Watershed Transform,

International Journal of Soft Computing and Engineering (IJSCE) ISSN: 2231- 2307, Volume-4, Issue-1, March 2014.

[7] Zhun Fan, Jiewei Lu, Benzhang Qiu, Tao Jiang, Kang An, Alex Noel Josephraj, and Chuliang Wei, Automated Steel Bar Counting and Center Localization with Convolutional Neural Networks, Published in ArXiv 2019.

[8] Serge Beucher, P. Soille, J.F. Rivest, Morphological gradients, Proc. SPIE

"Image Science and Technology", San Jose, California, Feb. 1992.

[9] Pham Duc Long, Oriented Morphology and Application to Count the Number of

Steelbars in the Bunches by Image Processing, TNU Journal of Science and

Technology, 6- 2020.

[10] LO Chua, L Yang, Cellular Neral Network Theory, IEEE Transactions on

[11] Zuoxian Nie, Mao-Hsiung Hung, Jing Huang, A Novel Algorithm of Rebar Counting on Conveyor Belt Based on Machine Vision, Journal of Information

Hiding and Multimedia Signal Processing Volume 7, Number 2, March 2016.

[12] Weiyan Hou, Zhengwei Duan, Xiaodan Liu, “A Template Covering based

Algorithm to Count the Bundled Steel Bars,” 2011 4th International Congress on

PHỤ LỤC

Một số mã nguồn chương trình Hiình thái học gradient

%% Dilation, erosion, and the morphological gradient

% The morphological operator dilation acts like a local maximum operator. % Erosion acts like a local minimum operator. You can use them together to % compute something called the _morphological gradient_.

%

%% Dilation

% The basic form of grayscale image dilation computes, for each image % pixel, the maximum value of its neighboring pixels. The neighborhood is % defined by the _structuring element_. For example, this structuring % element:

se1 = strel([1 1 1])

%%

% defines a neighborhood consisting of the pixel itself, together with its % left and right neighbors. Whereas this structuring element:

se2 = strel([1; 1; 1])

%%

% defines a neighborhood consisting of the pixel itself, together with the % pixels above and below it.

%

% Let's try dilation on everyone's favorite sample MATLAB matrix, the magic % square:

m5 = magic(5)

%%

d1 = imdilate(m5, se1)

%%

% |d1(3,3)|, which is 20, is the maximum of |[m5(3,2), m5(3,3), m5(3,4)]|, or % |[6 13 20]|.

%

% Dilating with |se2| computes the 3-pixel local maximum vertically:

d2 = imdilate(m5, se2)

%%

% |d2(3,3)| is the maximum of |[m5(2,3), m5(3,3), m5(4,3)]|.

%% Erosion

% Grayscale image erosion computes the minimum of each pixel's % neighborhood.

e1 = imerode(m5, se1)

%%

% |e1(3,3)| is the minimum of |[m5(3,2), m5(3,3), m5(3,4)]|.

%% Morphological gradient

% Dilation and erosion are often used in combination to produce a desired % image processing effect. One simple combination is the _morphological

% gradient_. P. Soille, in section 3.8 of the second edition of

% _Morphological Image Analysis: Principles and Applications_, talks about % three kinds of basic morphological gradients:

%

% * dilated_image - eroded_image % * original_image - eroded_image % * dilated_image - original_image %

% Soille calls the first one the basic morphological gradient, and you

% compute it this way using MATLAB and the Image Processing Toolbox:

% Read in circuit board image, crop it so it's not too big for the blog % page, and convert it to grayscale:

rgb = imread('board.tif');

I = rgb2gray(rgb(1:256,1:256,:));

se = strel(ones(3,3));

basic_gradient = imdilate(I, se) - imerode(I, se);

subplot(1,2,1), imshow(I), imcredit('Image courtesy of Alexander V. Panasyuk')

subplot(1,2,2), imshow(basic_gradient, [])

%%

% The second form is called the _half-gradient by erosion_ or _internal % gradient_.

subplot(1,2,2), imshow(internal_gradient, [])

%%

% "The internal gradient enhances internal boundaries of objects brighter % than their background and external boundaries of objects darker than % their background. For binary images, the internal gradient generates a % mask of the internal boundaries of the foreground image objects." % [Soille, page 86]

%

% The third form is called the _half-gradient by dilation_ or _external % gradient_:

external_gradient = imdilate(I, se) - I;

%% Direction gradients

% By using line segments as structuring elements, you can compute % directional gradients.

seh = strel([1 1 1]); sev = strel([1;1;1]);

horizontal_gradient = imdilate(I,seh) - imerode(I,seh); vertical_gradient = imdilate(I,sev) - imerode(I,sev);

subplot(1,2,1)

imshow(horizontal_gradient, []), title('Horizontal gradient')

imshow(vertical_gradient, []), title('Vertical gradient')

%%

% Try this on your own grayscale images. You can experiment with larger % structuring elements, too, such as |strel('disk',7)|.

%

% I'll be covering ways to combine erosion, dilation, and other fundamental % morphological operators in the near future.

%%

% _Steve Eddins_

% _Copyright 2006 The MathWorks, Inc._

/////////////////////////// %read a file image

RGB = imread('anh_toan_bo1.png'); figure(1),imshow(RGB)

%chuyen sang gray I = rgb2gray(RGB); figure(2),imshow(I) BW = im2bw(I, 0.46); figure(3),imshow(BW); se = strel('disk',12); closeBW = imopen(BW,se); holes = imfill(closeBW, [1 1]); closeBW(~holes) = 1; figure (6), imshow(closeBW) % Thuc hien DT BW1=bwdist(BW,'euclidean'); %BW1=bwdist(BW);

figure(4),imshow(BW1); BW2=bwdist(BW1,'cityblock'); figure(5),imshow(BW2); BW3 = imread('cac_truong_hop.png'); BW4 = edge(BW3,'canny'); figure (7), imshow(BW4) /////////////////////////////////////////// Đếm thép đầu bó %RGB = imread('dongxu.png');% RGB = imread('dau_bo_chua_eosion.png'); %figure(1),imshow(RGB)

%chuyen sang gray I = rgb2gray(RGB); figure(1),imshow(I) BW = im2bw(I, 0.46);%BW = im2bw(I, 0.47); %BW=imread('dau_bo_chua_eosion.png'); figure(2),imshow(BW); se = strel('disk',12); closeBW = imopen(BW,se); holes = imfill(closeBW, [1 1]); closeBW(~holes) = 1; figure (3), imshow(closeBW) erodedBW = imerode(closeBW,se); figure (8), imshow(closeBW) L = bwlabel(BW,8); [L,n] = bwlabel(closeBW) %title(['Number =',n]);

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng xử lý ảnh đếm các đối tượng có ảnh chạm nhau (Trang 65 - 76)

Tải bản đầy đủ (PDF)

(76 trang)