How can find area of the dent detected?
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
Hi, i have already found the dent in the laminates but i need find the area of the dent
please help me on this
2 件のコメント
Samadhan Kshirsagar
2021 年 10 月 12 日
by which method you have found dent?
Image Analyst
2021 年 10 月 12 日
@Samadhan Kshirsagar, he gave the code below in his answer:
Did you scroll down and see it?
採用された回答
Image Analyst
2014 年 9 月 3 日
You forgot to attach your image. All I can suggest then is to run my Image Segmentation Tutorial: http://www.mathworks.com/matlabcentral/fileexchange/25157-image-segmentation-tutorial---blobsdemo--
12 件のコメント
Image Analyst
2014 年 9 月 3 日
Dent Detection in Car Bodies,
ICPR00(Vol IV: 775-778).
IEEE via DOI 0009
Structured light. BibRef
TITLE = "Dent Detection in Car Bodies",
BOOKTITLE = ICPR00,
YEAR = "2000",
PAGES = "Vol IV: 775-778",
BIBSOURCE = "http://www.visionbib.com/bibliography/applicat839.html#TT113769"}
Image Analyst
2014 年 9 月 3 日
Just call regionprops() if you've already segmented the dents
labeledImage = bwlabel(dentBinaryImage);
measurements = regionprops(labeledImage, 'Area');
allAreas = [measurements.Area]
vijendra sn
2014 年 9 月 10 日
I want to find out area in millimeter or centimeter..how to find out.

Here is my code;
A = imread('DSC_0252.jpg'); b = rgb2gray(A);
hx = fspecial('sobel'); hy = hx'; Iy = imfilter(double(b), hy, 'circular'); Ix = imfilter(double(b), hx, 'circular');
gradmag = sqrt(Ix.^2 + Iy.^2);
k=figure,imshow(gradmag,[]); set(k, 'visible','off'); filename = 'temp_file.jpg'; saveas(k, filename);
i1 = imread(filename); delete(filename);
[x, y, rgb] = ind2sub([size(i1,1) size(i1,2) size(i1,3)], find(i1 ~= 255));
C = i1(min(x):max(x)-1,min(y):max(y)-1,:);
C = rgb2gray(C); figure,imshow(C); I = edge(C,'sobel');
I = imcrop(I,[10 7 920 725]); I = imresize(I, [3500 3700]);
f=figure,imshow(I); set(f, 'visible','off'); imwrite(I, filename);
bw = imread(filename); delete(filename);
bw1 = bwareaopen(bw,1100); bwfill=imfill(bw1,'holes'); boundary=bwboundaries(bwfill);
figure,imshow(I),hold on;
[row1,dim]=size(boundary);
for k=1:row1 x1=boundary{k}; h=plot(x1(:,2),x1(:,1),'c','LineWidth',1); end
labeledImage = bwlabel(bw1); measurements = regionprops(labeledImage, 'Area'); allAreas = [measurements.Area]
Image Analyst
2014 年 9 月 10 日
Did you get the article yet? Are you going to?
The best method is to use profilometry to get actual topographic information. For example an instrument from GFM http://www.gfm3d.com/index.php?option=com_content&id=65%3Amikrocad&lang=en
I don't think your method is that good or robust. It depends on the size being large, so it can't measure small dents. I didn't run it but I don't see imconvhull() being called and since there is only an edge on one side of the dent, the side with the ramp won't be included. Keep working on it though. As you can imagine once you have a robust program it will probably be hundreds if not thousands of lines long.
vijendra sn
2014 年 9 月 11 日
I don't know how to use imconvhull() as i don't have image processing tool box
k=figure,imshow(gradmag,[]);
set(k, 'visible','off');
filename = 'temp_file.jpg';
saveas(k, filename);
i1 = imread(filename);
delete(filename);
In this small code, i am saving the image and reading the image again.I don't want to save and read as it takes too much time for processing. Is there any method to develop....
Image Analyst
2014 年 9 月 11 日
I don't know why you want i1 to be a screenshot. What are you going to do with a screenshot of the figure? What good is that instead of the actual image that is displayed in the figure? Get the Image Processing Toolbox. You really don't want to rewrite it yourself and there are too many useful functions in there for getting boundaries, making measurements, doing size filtering and connected components labeling, displaying images, etc.
vijendra sn
2014 年 9 月 12 日
Hi,
I am not getting the correct functions. can u tell me, how to code for above small code
Image Analyst
2014 年 9 月 12 日
Isn't "allAreas" the areas that you're looking for? Remember to do
bw1 = bwconvull(bw1);
like I suggested before you label the image.
vijendra sn
2014 年 9 月 12 日
i am getting error for this code:
A = imread('DSC_0977.jpg');
B = rgb2gray(A);
hx = fspecial('sobel');
hy = hx';
Iy = imfilter(double(B), hy, 'circular');
Ix = imfilter(double(B), hx, 'circular');
gradmag = sqrt(Ix.^2 + Iy.^2);
k=figure(1),imshow(gradmag,[]);
set(k, 'visible','off');
filename = 'temp_file.jpg';
saveas(k, filename);
i1 = imread(filename);
delete(filename);
[x, y, rgb] = ind2sub([size(i1,1) size(i1,2) size(i1,3)], find(i1 ~= 255));
C = i1(min(x):max(x)-1,min(y):max(y)-1,:);
C = rgb2gray(C);
I = edge(C,'sobel');
I = imcrop(I,[10 7 920 725]);
I = imresize(I, [3250 3700]);
f=figure(3),imshow(I);
set(f, 'visible','off');
imwrite(I, filename);
bw = imread(filename);
delete(filename);
bw1 = bwareaopen(bw,1500);
bwfill = imfill(bw1,'holes');
boundary = bwboundaries(bwfill);
figure(2),imshow(I),hold on;
[row1,dim]=size(boundary);
for k=1:row1
x1=boundary{k};
h=plot(x1(:,2),x1(:,1),'c','LineWidth',1);
end
bw1 = bwconvull(bw1);
labeledImage = bwlabel(bw1);
measurements = regionprops(labeledImage,'Area');
allAreas = [measurements.Area];
ERROR IS: Undefined function or method 'bwconvull' for input arguments of type 'logical'
Image Analyst
2014 年 9 月 12 日
Well how old is your version? bwconvhull() is several years old but if you have an antique version, then you may not have that function and should upgrade.
vijendra sn
2014 年 9 月 15 日
編集済み: Image Analyst
2014 年 9 月 15 日
My Matlab version is 7.10.0.499(2010a).
Image Analyst
2014 年 9 月 15 日
Please upgrade. What happens when you say "which bwconvhull"?
その他の回答 (1 件)
vijendra sn
2014 年 9 月 22 日
Hi,
i used bwconvhull function...how to analyze this function but still i couldn't get how to find area of the these dent detected. There are 9 dent area detected.
How to find the area of the 1 pixel in image
close all;
clear all;
clc;
A = imread('DSC_0977.jpg');
B = rgb2gray(A);
hx = fspecial('sobel');
hy = hx';
Iy = imfilter(double(B), hy, 'circular');
Ix = imfilter(double(B), hx, 'circular');
gradmag = sqrt(Ix.^2 + Iy.^2);
k=figure(1),imshow(gradmag,[]);
set(k, 'visible','off');
filename = 'temp_file.jpg';
saveas(k, filename);
i1 = imread(filename);
delete(filename);
[x, y, rgb] = ind2sub([size(i1,1) size(i1,2) size(i1,3)], find(i1 ~= 255));
C = i1(min(x):max(x)-1,min(y):max(y)-1,:);
C = rgb2gray(C);
I = edge(C,'sobel');
I = imcrop(I,[10 7 920 725]);
I = imresize(I,[3250 3500]);
f=figure(3),imshow(I);
set(f, 'visible','off');
imwrite(I, filename);
bw = imread(filename);
delete(filename);
bw1 = bwareaopen(bw,750);
bwfill = imfill(bw1,'holes');
boundary = bwboundaries(bwfill);
figure(2),imshow(I),hold on;
[row1,dim]=size(boundary);
for k = 1:row1
x1= boundary{k};
h = plot(x1(:,2),x1(:,1),'c','LineWidth',1);
bw2 = bwconvhull(boundary{k});
[label,Total]=bwlabel(bw2);
measurements = regionprops(label,'Area');
allareas(k,1)= [measurements.Area];
end

カテゴリ
ヘルプ センター および File Exchange で Deep Learning Toolbox についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
