Can you look at my code then and inform me on how could I refine: function [screw\_center\_X, screw\_center\_Y, screw\_radius] = Circle\_Detection\_Test()
%#codegen
img = imread('Edge\_Detection\_Case.jpg'); 
imshow(img);
 

% Get the image dimensions
[imHeight, imWidth] = size(img);

% Display the image dimensions
disp(['Image resolution: ' num2str(imWidth) 'x' num2str(imHeight) ]);

% Split the image into four quadrants
[rows, cols, ~] = size(img);
row\_half = round(rows/2);
col\_half = round(cols/2);
quad1 = img(1:row\_half, 1:col\_half, :);
quad2 = img(1:row\_half, col\_half+1:end, :);
quad3 = img(row\_half+1:end, 1:col\_half, :);
quad4 = img(row\_half+1:end, col\_half+1:end, :);

% Ask user to select which quadrant they want to detect for circles
quadPrompt = "Please select a quadrant of the image to detect screws: ";
selectedQuad = input(quadPrompt);

% Switch case for setting selected quadrant value with corresponding
% quadrant
switch selectedQuad
 case 1
 selectedQuad = quad1;
 case 2
 selectedQuad = quad2;
 case 3
 selectedQuad = quad3;
 case 4 
 selectedQuad = quad4;
end
% Note: They detect actual quadrant three if you do imshow(quad3)
imshow(selectedQuad);

% Detection of circles only in quadrant 3
Rmin = 10; Rmax = 30; % need to supply estimate of radius (in pixels)!
[center, radius] = imfindcircles(selectedQuad, [Rmin Rmax], 'Sensitivity', 0.92) ;

% Store the centers and radii of each circle in separate arrays
num\_circles = length(radius);
circle\_centers = zeros(num\_circles, 2);
circle\_radii = zeros(num\_circles, 1);
for i = 1:num\_circles
 circle\_centers(i,:) = center(i,:);
 circle\_radii(i) = radius(i);
end

% output of imfindcircles()
% center = 236.9291 172.4747 (x, y of center of circle)
% radius = 79.5305 (radius of circle)
% Display the circle 
viscircles(center, radius); % display circle
% Display the calculated center 
hold on; plot(center(:,1), center(:,2), 'yx', 'LineWidth', 2);

% Add a label with the circle number at the center of each detected circle
for i = 1:num\_circles
 text(circle\_centers(i,1), circle\_centers(i,2), num2str(i), 'Color', 'blue', 'HorizontalAlignment', 'center');
end
hold off; 

% Add a label with the center and radius of the circle with the circle
% position selected by the user
screwPrompt = "Please enter the screw you want to remove: ";
selectedScrew = input(screwPrompt); 

circle\_center = circle\_centers(selectedScrew,:);
circle\_radius = circle\_radii(selectedScrew);

% Code used for converting the center location in pixels to unit by robotic system 
% % Convert the center locations and radii from pixels to millimeters

% 1)Need to determine pixel size
% Need censor size and resolution of the image

% Information for Logitech C920 Camera
sensor\_size = 0.00635; %in meters
%Camera is capable of capturing images at resolutions up to 1920x1080
%pixels
horizontal\_resolution = 1920; %in pixels
vertical\_resolution = 1080; %in pixels

% 2)Determining pixel size
pixel\_size = (sensor\_size / sqrt(horizontal\_resolution^2 + vertical\_resolution^2))\*10^3; %in millimeters for robotic system

% 3)Conversion of the center location and radius values to millimeters
screw\_center\_X = circle\_center(1)\* pixel\_size;
screw\_center\_Y = circle\_center(2)\*pixel\_size;
screw\_radius = circle\_radius \* pixel\_size;
disp("Screw position "+ selectedScrew + "'s" + " center and radius info")
disp("Center x-axis location: "+ screw\_center\_X + " mm")
disp("Center y-axis location: "+ screw\_center\_Y + " mm")
disp("Radius: " + screw\_radius + " mm")
내 코드를 보고 어떻게 개선할 수 있는지 알려주세요: 함수 [나사\_중심\_X, 나사\_중심\_Y, 나사\_반경] = Circle\_Detection\_Test()%#코드 생성img = imread('Edge\_Detection\_Case.jpg'); imshow(img); % 이미지 치수 가져오기[imHeight, imWidth] = size(img);이미지 크기 표시disp(['이미지 해상도: ' num2str(imWidth) 'x' num2str(imHeight) ]);이미지를 네 사분면으로 나누기[행, 열, ~] = size(img);row\_half = round(rows/2);col\_half = round(cols/2);quad1 = img(1:행\_반, 1:색\_반, :);quad2 = img(1:row\_half, col\_half+1:end, :);quad3 = img(row\_half+1:end, 1:col\_half, :);quad4 = img(row\_half+1:end, col\_half+1:end, :);사용자에게 원에 대해 감지할 사분면을 선택하도록 요청합니다.quadPrompt = "나사를 감지할 이미지의 사분면을 선택해 주세요: ";selectedQuad = 입력(쿼드 프롬프트);선택한 사분면 값을 해당 사분면으로 설정하기 위한 대소문자 전환사분면스위치 selectedQuad case 1 selectedQuad = quad1; case 2 selectedQuad = quad2; case 3 selectedQuad = quad3; case 4  selectedQuad = quad4;end% 참고: 다음과 같이 하면 실제 사분면 3을 감지합니다.imshow(selectedQuad);% 사분면 3에서만 원 감지Rmin = 10; Rmax = 30; % 반경의 추정치(픽셀 단위)를 제공해야 합니다![center, radius] = imfindcircles(selectedQuad, [Rmin Rmax], 'Sensitivity', 0.92) ;% 각 원의 중심과 반지름을 별도의 배열에 저장합니다.num\_circles = 길이(반지름);원\_중심 = 0(num\_circles, 2);circle\_radii = 0(num\_circles, 1);for i = 1:num\_circles circle\_centers(i,:) = center(i,:); circle\_radii(i) = radius(i);endimfindcircles()의 % 출력center = 236.9291 172.4747 (원의 중심 x, y)radius = 79.5305 (원의 반지름)% 원을 표시합니다. viscircles(center, radius); % 원 표시% 계산된 중심을 표시합니다. hold on; plot(center(:,1), center(:,2), 'yx', 'LineWidth', 2);감지된 각 원의 중심에 원 번호가 포함된 라벨을 추가합니다.for i = 1:num\_circles text(circle\_centers(i,1), circle\_centers(i,2), num2str(i), 'Color', 'blue', 'HorizontalAlignment', 'center');endhold off; 원으로 원의 중심과 반지름이 포함된 라벨을 추가합니다.사용자가 선택한 % 위치screwPrompt = "제거할 나사를 입력하세요: ";selectedScrew = 입력(screwPrompt); 원\_중심 = 원\_중심(selectedScrew,:);원\_반경 = 원\_반경(selectedScrew);로봇 시스템에서 중심 위치를 픽셀 단위로 변환하는 데 사용되는 코드입니다. 중심 위치와 반지름을 픽셀에서 밀리미터로 변환합니다.1) 픽셀 크기 결정 필요이미지의 크기 및 해상도 결정 필요로지텍 C920 카메라에 대한 정보sensor\_size = 0.00635; %in 미터카메라는 최대 1920x1080 해상도로 이미지를 캡처할 수 있습니다.픽셀수평\_해상도 = 1920; %픽셀 단위수직\_해상도 = 1080; %in 픽셀% 2)픽셀 크기 결정하기픽셀\_size = (센서\_size / sqrt(가로\_해상도^2 + 세로\_해상도^2))\*10^3; %밀리미터(로봇 시스템의 경우)% 3)중심 위치 및 반경 값을 밀리미터로 변환합니다.나사\_중심\_X = 원\_중심(1)\* 픽셀\_size;screw\_center\_Y = 원\_center(2)\* 픽셀\_size;screw\_radius = 원\_radius \* 픽셀\_size;disp("나사 위치"+ selectedScrew + "'s" + " 중심 및 반경 정보")disp("중심 x축 위치:"+ 나사\_중심\_X + " mm")disp("중심 Y축 위치: "+ 나사\_중심\_Y + " mm")disp("반지름: " + 나사\_반경 + " mm")