cuốn sách gpt4 ai đã làm

Tìm các đỉnh (vùng) trong dữ liệu 2D

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 02:34:27 30 4
mua khóa gpt4 Nike

Tôi đang tìm kiếm dữ liệu 2Ddiện tích đỉnh(Hình ảnh thang độ xám hoặc phong cảnh 2D, nếu bạn thích, được tạo thông qua biến đổi Hough). diện tích đỉnhđề cập đếnđỉnh cực đại cục bộ,Nhưngkhông một điểm nàoNhưng xung quanhmột phần củakhu vực đóng góp Đã theo dõi. Tôi biết, đó là một định nghĩa mơ hồ, nhưng có lẽ núi Từ này hoặc hình ảnh dưới đây sẽ cho bạn trực giác về điều tôi muốn nói.

Các đỉnh được đánh dấu màu đỏ (1-4) là những gì tôi muốn, các đỉnh được đánh dấu màu hồng (5-6) là ví dụ về "vùng xám", bạn không thể tìm thấy các đỉnh nhỏ hơn đó cũng không sao, nhưng cũng không sao nếu chúng là.

một kết quả tối ưu trong 3D

Hình ảnh chứa 1-20 vùng tăng đột biến với độ cao khác nhau. Dữ liệu 2D cho biểu đồ lướt sóng ở trên và kết quả có thể có được hiển thị bên dưới (màu cam tương ứng với Đỉnh 1, màu xanh lá cây tương ứng với Đỉnh 2 a/b, ...). Bạn có thể tìm thấy một hình ảnh được sử dụng để thử nghiệm trong liên kết mô tả:

Hình trái:hình ảnh đầu vào - - - - ở giữa:(Tốt)kết quả - - - - Phải:Kết quả được xếp chồng lên hình ảnh.

đầu vào, kết quả và kết quả xếp chồng

Các kết quả trên được tạo ra bằng cách sử dụng ngưỡng đơn giản (mã MATLAB):

% thresh_scale = 15; tham số %: có bao nhiêu bước ngưỡng 
% thresh_perc = 6; tham số %: ngưỡng mà chúng tôi cắt bớt
thresh = multithresh(H,thresh_scale);
q_image = imquantize(H, thresh);

q_image(q_image <= thresh_perc) = 0; % vùng dưới ngưỡng bị loại bỏ
q_image(q_image > thresh_perc) = 1; % ... trong khi tất cả những thứ khác được giữ nguyên
q_image = imbinarize(q_image); % nhị phân hóa để xử lý tiếp
B = bwareaopen(q_image, nhood_minsize); % Lọc các vùng thực sự nhỏ
[L, L_num] = bwlabel(B); % <- kết quả % Nhãn các thành phần được kết nối

Một vài giá trị như thế này (15 và 6) thường hoạt động tốt nếu có ít đỉnh tương tự nhau, nhưng điều này không nhất quán nếu có nhiều đỉnh hơn hoặc chúng thay đổi nhiều. Tôi chủ yếu gặp hai vấn đề không thể giải quyết bằng cách điều chỉnh các tham số:

  • Các đỉnh cao hơn có thể che khuất các đỉnh thấp hơn (nhưng có thể phân biệt rõ ràng). Vì ngưỡng tương ứng với đỉnh cao nhất nên các đỉnh khác có thể thấp hơn.
  • Trong một số trường hợp, thung lũng giữa hai đỉnh nằm trên ngưỡng, hợp nhất nhiều đỉnh thành một (như được quan sát thấy ở đỉnh 2 a/b).

Tôi cũng không muốn diện tích đỉnh lớn nênQuận ĐỉnhCó lẽ nên được định nghĩa là một phần trăm nào đó của ngọn núi. Tôi nghĩ thay vì sử dụng ngưỡng toàn cầu, tôi sẽ sử dụng một phương pháp để tìm các vùng cực đại so với môi trường trực tiếp của chúng. Tôi đã xem xét sự dịch chuyển trung bình và phân đoạn MSER, nhưng chúng có vẻ phù hợp để phân đoạn hình ảnh thực chứ không phải dữ liệu tổng hợp.

Bằng cách nào đó, tôi đã tưởng tượng rằng việc lấp đầy phần âm bản của cảnh quan bằng một lượng nước nhất định sẽ mang lại cho tôi khu vực mà tôi đang tìm kiếm: một lưu vực lấp đầy và trải rộng theo hình dạng của khu vực xung quanh. Giống như đổ nước lên hình ảnh bên dưới, hồ bơi thu được chính là khu vực tôi đang tìm kiếm.

hình ảnh âm bản (bổ sung), sẵn sàng đổ nước vào đó

Tôi tưởng đây chính là điều mà thuật toán lũ lụt hoặc lưu vực đầu nguồn đã làm, nhưng lũ lụt trông giống như một câu chuyện hoàn toàn khác và kết quả lưu vực không phải là điều tôi mong muốn chút nào và khi áp dụng một số quy trình tiền xử lý, tôi nghĩ nó có thể hữu ích (cắt xuống 1/10) :

lưu vực bị cắt bớt với ngưỡng 1/10

Hoặc khi sử dụng cùng ngưỡng cắt như ví dụ trên (cắt đến 15/6):

lưu vực bị cắt bớt với ngưỡng 6/15

Sử dụng mã này để tạo (MATLAB):

thresh = multithresh(H, 10); % được đặt thành 10 ||
q_image = imquantize(H, thresh);
Mask = false(size(q_image)); % tạo mặt nạ cắt...
Mask(q_image > 1) = true; % ... để loại bỏ 10% thấp nhất ||
% hiển thị với: figure, imshow(mask);

% TÙY CHỌN: Làm mịn Gaussian
H = imgaussfilt(H, 2); % áp dụng trước khi thêm giá trị Inf
% TÙY CHỌN: Biến đổi H-tối thiểu
Tham số H = imhmin(H, 10); % là ngưỡng triệt tiêu cực tiểu nông
H = -H; % Bổ sung cho hình ảnh
H(~mask) = Inf % buộc các pixel "nối đất" thành Inf

L = lưu vực sông (D);
L(~mask) = 0; % clip "nối đất" từ kết quả
imshow(label2rgb(L,'lines',[.5 .5 .5])); hiển thị kết quả

Câu hỏi hiện tại của tôi: Có thuật toán nào có thể lấp đầy cảnh quan và cung cấp cho tôi các nhóm kết quả (đối với các lượng nước khác nhau) để tôi thực hiện các hành động của mình không? Bạn đã thử triển khai nó bằng phương pháp trên chưa? Hoặc bất kỳ đề xuất nào khác đều được chào đón. Tôi đang triển khai nó trong MATLAB (hoặc Python nếu cần), nhưng tôi có thể sử dụng bất kỳ mã hoặc mã giả nào.

để giao tiếp vớicâu hỏi nàyĐể phân biệt, các giá trị tối đa của tôi không được phân tách bằng giá trị 0. Những gì tôi muốn cũng tương tự, nhưng không có một gợi ý hữu ích nào (leo đồi/ủ mô phỏng sẽ chỉ cho bạn một điểm...).

Câu hỏi nàyCũng thú vị, nhưng nó giải quyết được vấn đề ràng buộc (giả sử có chính xác 5 đỉnh có kích thước nhất định), điều này làm cho phương pháp được đề xuất trở nên vô dụng đối với trường hợp của tôi.

câu trả lời hay nhất

Trong loại bài toán tìm đỉnh này, tôi chủ yếu sử dụng các phép toán hình thái. Vì kết quả của phép biến đổi Hough hầu hết đều nhiễu, nên tôi thích làm mờ nó trước rồi áp dụng phép biến đổi tối đa tophat và mở rộng. Sau đó, với mỗi mức cực đại cục bộ, ngưỡng thích ứng được sử dụng để tìm vùng xung quanh nó. Đây là một mã mẫu:

im=imread('udIuy.png');

% mờ
im=imgaussfilt(im,1);

% biến đổi tophat
im2=imtopha(im,strel('đĩa',5));

% mức tối đa mở rộng
im3=imextendsmax(im2,10);

% Trích xuất từng đốm màu
s=khu vựcprops(im3,'Centroid','PixelIdxList');

hình,hình ảnh(im),hình ảnh trục

cho i=1:số(s)
x=ceil(s(i).Centroid);
tmp=im*0;
tmp(s(i).PixelIdxList)=1;
tmp2=tmp.*im2;

% Biên độ và vị trí cực đại

[refV,b]=max(tmp2(:));
[x2,y2]=ind2sub(size(im),b);

% chọn vùng xung quanh biên độ tối đa cục bộ
tmp=bwselect(im2>refV*0.6,y2,x2,4);

[xi,yi]=tìm(tmp);
chờ đã, cốt truyện(yi,xi,'r.')
chờ đã, text(y2+10,x2,num2str(i),'Color','white','FontSize',16)
end

nhập mô tả hình ảnh ở đây

Về thuật toán - tìm đỉnh (vùng) trong dữ liệu 2D, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/43852754/

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress