ImageMenu.cs 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278
  1. using PaintDotNet.Base;
  2. using PaintDotNet.Data.Param;
  3. using PaintDotNet.Processing;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Windows.Forms;
  7. namespace PaintDotNet.Menus
  8. {
  9. /// <summary>
  10. /// 图像处理菜单
  11. /// </summary>
  12. internal sealed class ImageMenu : PdnMenuItem
  13. {
  14. private PdnMenuItem menuImageAdjust;
  15. private PdnMenuItem menuImageSharpen;
  16. private PdnMenuItem menuImageSmooth;
  17. private ToolStripSeparator menuImageSeparator1;
  18. private PdnMenuItem menuImageEdgeDetection;
  19. private PdnMenuItem menuImageInterOperation;
  20. private ToolStripSeparator menuImageSeparator2;
  21. private PdnMenuItem menuImageShift;
  22. private PdnMenuItem menuImageStitching;
  23. private PdnMenuItem menuImageDepthExtension;
  24. //反色
  25. private PdnMenuItem menuImageReverseColor;
  26. //灰度化
  27. private PdnMenuItem menuImageGrayscale;
  28. //白平衡
  29. private PdnMenuItem menuImageWhiteBalance;
  30. //色彩平衡
  31. private PdnMenuItem menuImageColorBalance;
  32. //阴影校正
  33. private PdnMenuItem menuImageShadingCorrection;
  34. //色度/饱和度/亮度
  35. private PdnMenuItem menuImageHSLAdjust;
  36. //亮度/对比度/伽马值
  37. private PdnMenuItem menuImageBCGAdjust;
  38. //图像旋转
  39. private PdnMenuItem menuImageRotate;
  40. //图像处理
  41. private PdnMenuItem menuImageChange;
  42. //描绘
  43. private PdnMenuItem menuImagePortray;
  44. //加强轮廓
  45. private PdnMenuItem menuImageEnhanceContour;
  46. //虚化蒙版
  47. private PdnMenuItem menuImageBlurMask;
  48. //西格玛
  49. private PdnMenuItem menuImageSigma;
  50. //各向异性高斯滤波
  51. private PdnMenuItem menuImageGaussianFiltering;
  52. //低通滤波
  53. private PdnMenuItem menuImageLowPassFiltering;
  54. //中值滤波
  55. private PdnMenuItem menuImageMedianFiltering;
  56. //高斯模糊
  57. private PdnMenuItem menuImageGaussianBlur;
  58. //双边滤波
  59. private PdnMenuItem menuImageBilateralFiltering;
  60. //小波降噪
  61. private PdnMenuItem menuImageWaveletDenoising;
  62. //Log
  63. private PdnMenuItem menuImageLog;
  64. //Canny
  65. private PdnMenuItem menuImageCanny;
  66. //Sobel
  67. private PdnMenuItem menuImageSobel;
  68. //Kirsch
  69. private PdnMenuItem menuImageKirsch;
  70. //Prewitt
  71. private PdnMenuItem menuImagePrewitt;
  72. //Roberts
  73. private PdnMenuItem menuImageRoberts;
  74. //Laplace
  75. private PdnMenuItem menuImageLaplace;
  76. //增加
  77. private PdnMenuItem menuImageAddition;
  78. //减去
  79. private PdnMenuItem menuImageSubtraction;
  80. //乘以
  81. private PdnMenuItem menuImageMultiplication;
  82. //除以
  83. private PdnMenuItem menuImageDivision;
  84. //平均
  85. private PdnMenuItem menuImageAverage;
  86. //平方
  87. private PdnMenuItem menuImageSquare;
  88. //平方根
  89. private PdnMenuItem menuImageSquareRoot;
  90. //对数
  91. private PdnMenuItem menuImageLogarithm;
  92. //指数
  93. private PdnMenuItem menuImageIndex;
  94. //最大值
  95. private PdnMenuItem menuImageMax;
  96. //最小值
  97. private PdnMenuItem menuImageMin;
  98. public ImageMenu(int menuId)
  99. {
  100. InitializeComponent();
  101. this.MenuId = menuId;
  102. }
  103. private void InitializeComponent()
  104. {
  105. this.menuImageAdjust = new PdnMenuItem(ActionType.Adjust);
  106. this.menuImageSharpen = new PdnMenuItem(ActionType.Sharpen);
  107. this.menuImageSmooth = new PdnMenuItem(ActionType.Smooth);
  108. this.menuImageSeparator1 = new ToolStripSeparator();
  109. this.menuImageEdgeDetection = new PdnMenuItem(ActionType.EdgeDetection);
  110. this.menuImageInterOperation = new PdnMenuItem(ActionType.InterImageOperation);
  111. this.menuImageSeparator2 = new ToolStripSeparator();
  112. this.menuImageShift = new PdnMenuItem(ActionType.ActionImageOffset);
  113. this.menuImageStitching = new PdnMenuItem(ActionType.ActionImageStitching);
  114. this.menuImageStitching.AutomaticScript = false;
  115. this.menuImageDepthExtension = new PdnMenuItem(ActionType.ActionExtendedDepthOfFocus);
  116. this.menuImageDepthExtension.AutomaticScript = false;
  117. this.menuImageReverseColor = new PdnMenuItem(ActionType.ActionRevertColor);
  118. this.menuImageGrayscale = new PdnMenuItem(ActionType.ActionBgr2Gray);
  119. this.menuImageWhiteBalance = new PdnMenuItem(ActionType.ActionWhiteBalance);
  120. this.menuImageColorBalance = new PdnMenuItem(ActionType.ActionColorBalance);
  121. this.menuImageShadingCorrection = new PdnMenuItem(ActionType.ActionShadingCorrection);
  122. this.menuImageHSLAdjust = new PdnMenuItem(ActionType.ActionHSB);
  123. this.menuImageBCGAdjust = new PdnMenuItem(ActionType.ActionBCG);
  124. this.menuImageRotate = new PdnMenuItem(ActionType.ActionImageRotate);
  125. this.menuImageChange = new PdnMenuItem(ActionType.ImageChangeResolution);
  126. this.menuImagePortray = new PdnMenuItem(ActionType.ActionPortray);
  127. this.menuImageEnhanceContour = new PdnMenuItem(ActionType.ActionEnhanceContour);
  128. this.menuImageBlurMask = new PdnMenuItem(ActionType.ActionBlurMask);
  129. this.menuImageSigma = new PdnMenuItem(ActionType.Sigma);
  130. this.menuImageGaussianFiltering = new PdnMenuItem(ActionType.GaussianFiltering);
  131. this.menuImageLowPassFiltering = new PdnMenuItem(ActionType.LowPassFiltering);
  132. this.menuImageMedianFiltering = new PdnMenuItem(ActionType.MedianFiltering);
  133. this.menuImageGaussianBlur = new PdnMenuItem(ActionType.GaussianBlur);
  134. this.menuImageBilateralFiltering = new PdnMenuItem(ActionType.BilateralFiltering);
  135. this.menuImageWaveletDenoising = new PdnMenuItem(ActionType.WaveletDenoising);
  136. this.menuImageLog = new PdnMenuItem(ActionType.Log);
  137. this.menuImageCanny = new PdnMenuItem(ActionType.Canny);
  138. this.menuImageSobel = new PdnMenuItem(ActionType.Sobel);
  139. this.menuImageKirsch = new PdnMenuItem(ActionType.Kirsch);
  140. this.menuImagePrewitt = new PdnMenuItem(ActionType.Prewitt);
  141. this.menuImageRoberts = new PdnMenuItem(ActionType.Roberts);
  142. this.menuImageLaplace = new PdnMenuItem(ActionType.Laplace);
  143. this.menuImageAddition = new PdnMenuItem(ActionType.ActionImageAddition);
  144. this.menuImageAddition.AutomaticScript = false;
  145. this.menuImageSubtraction = new PdnMenuItem(ActionType.ActionImageSubtraction);
  146. this.menuImageSubtraction.AutomaticScript = false;
  147. this.menuImageMultiplication = new PdnMenuItem(ActionType.ActionImageMultiplication);
  148. this.menuImageMultiplication.AutomaticScript = false;
  149. this.menuImageDivision = new PdnMenuItem(ActionType.ActionImageDivision);
  150. this.menuImageDivision.AutomaticScript = false;
  151. this.menuImageAverage = new PdnMenuItem(ActionType.ActionImageAverage);
  152. this.menuImageAverage.AutomaticScript = false;
  153. this.menuImageSquare = new PdnMenuItem(ActionType.ActionImageSquare);
  154. //this.menuImageSquare.AutomaticScript = false;
  155. this.menuImageSquareRoot = new PdnMenuItem(ActionType.ActionImageSquareBoot);
  156. //this.menuImageSquareRoot.AutomaticScript = false;
  157. this.menuImageLogarithm = new PdnMenuItem(ActionType.ActionImageLogarithm);
  158. //this.menuImageLogarithm.AutomaticScript = false;
  159. this.menuImageIndex = new PdnMenuItem(ActionType.ActionImageIndex);
  160. //this.menuImageIndex.AutomaticScript = false;
  161. this.menuImageMax = new PdnMenuItem(ActionType.ActionImageMax);
  162. this.menuImageMax.AutomaticScript = false;
  163. this.menuImageMin = new PdnMenuItem(ActionType.ActionImageMin);
  164. this.menuImageMin.AutomaticScript = false;
  165. //
  166. // ImageMenu
  167. //
  168. this.DropDownItems.AddRange(
  169. new ToolStripItem[]
  170. {
  171. this.menuImageAdjust,
  172. this.menuImageSharpen,
  173. this.menuImageSmooth,
  174. this.menuImageSeparator1,
  175. this.menuImageEdgeDetection,
  176. this.menuImageInterOperation,
  177. this.menuImageSeparator2,
  178. this.menuImageShift,
  179. this.menuImageStitching,
  180. this.menuImageDepthExtension
  181. });
  182. this.Name = "Menu.Image";
  183. this.Text = PdnResources.GetString("Menu.Image.Text");
  184. //
  185. // 调节
  186. //
  187. this.menuImageAdjust.DropDownItems.AddRange(
  188. new ToolStripItem[]
  189. {
  190. this.menuImageReverseColor,
  191. this.menuImageGrayscale,
  192. this.menuImageWhiteBalance,
  193. this.menuImageColorBalance,
  194. this.menuImageShadingCorrection,
  195. this.menuImageHSLAdjust,
  196. this.menuImageBCGAdjust,
  197. this.menuImageRotate,
  198. this.menuImageChange
  199. });
  200. //
  201. // 锐化
  202. //
  203. this.menuImageSharpen.DropDownItems.AddRange(
  204. new ToolStripItem[]
  205. {
  206. this.menuImagePortray,
  207. this.menuImageEnhanceContour,
  208. this.menuImageBlurMask
  209. });
  210. //
  211. // 平滑
  212. //
  213. this.menuImageSmooth.DropDownItems.AddRange(
  214. new ToolStripItem[]
  215. {
  216. this.menuImageSigma,
  217. this.menuImageGaussianFiltering,
  218. this.menuImageLowPassFiltering,
  219. this.menuImageMedianFiltering,
  220. this.menuImageGaussianBlur,
  221. this.menuImageBilateralFiltering,
  222. this.menuImageWaveletDenoising
  223. });
  224. //
  225. // 边缘检测
  226. //
  227. this.menuImageEdgeDetection.DropDownItems.AddRange(
  228. new ToolStripItem[]
  229. {
  230. this.menuImageLog,
  231. this. menuImageCanny,
  232. this.menuImageSobel,
  233. this.menuImageKirsch,
  234. this.menuImagePrewitt,
  235. this.menuImageRoberts,
  236. this.menuImageLaplace
  237. });
  238. //
  239. // 图像间操作
  240. //
  241. this.menuImageInterOperation.DropDownItems.AddRange(
  242. new ToolStripItem[]
  243. {
  244. this.menuImageAddition,
  245. this.menuImageSubtraction,
  246. this.menuImageMultiplication,
  247. this.menuImageDivision,
  248. this.menuImageAverage,
  249. this.menuImageSquare,
  250. this.menuImageSquareRoot,
  251. this.menuImageLogarithm,
  252. this.menuImageIndex,
  253. this.menuImageMax,
  254. this.menuImageMin
  255. });
  256. //
  257. // 图像偏移
  258. //
  259. this.menuImageShift.Click += new EventHandler(menuImageShift_Click);
  260. //
  261. // 图像拼接
  262. //
  263. this.menuImageStitching.Click += new EventHandler(menuImageStitching_Click);
  264. //
  265. // 景深扩展
  266. //
  267. this.menuImageDepthExtension.Click += new EventHandler(MenuImageDepthExtension_Click);
  268. //
  269. // 以下是子菜单
  270. //
  271. //
  272. // 反色
  273. //
  274. this.menuImageReverseColor.Click += new EventHandler(menuImageReverseColor_Click);
  275. this.menuImageReverseColor.Text = PdnResources.GetString("Menu.Image.ReverseColor.Text");
  276. this.menuImageReverseColor.Image = PdnResources.GetImageResource("Icons.MenuActionReverseColorIcon.png").Reference;
  277. //
  278. // 灰度化
  279. //
  280. this.menuImageGrayscale.Click += new EventHandler(menuImageGrayscale_Click);
  281. this.menuImageGrayscale.Text = PdnResources.GetString("Menu.Image.Grayscale.Text");
  282. this.menuImageGrayscale.Image = PdnResources.GetImageResource("Icons.MenuActionGrayscaleIcon.png").Reference;
  283. //
  284. // 白平衡
  285. //
  286. this.menuImageWhiteBalance.Click += new EventHandler(menuImageWhiteBalance_Click);
  287. this.menuImageWhiteBalance.Text = PdnResources.GetString("Menu.Image.WhiteBalance.Text");
  288. this.menuImageWhiteBalance.Image = PdnResources.GetImageResource("Icons.MenuActionWhiteBalanceIcon.png").Reference;
  289. //
  290. // 色彩平衡
  291. //
  292. this.menuImageColorBalance.Click += new EventHandler(menuImageColorBalance_Click);
  293. this.menuImageColorBalance.Text = PdnResources.GetString("Menu.Image.ColorBalance.Text");
  294. this.menuImageColorBalance.Image = PdnResources.GetImageResource("Icons.MenuActionColorBalanceIcon.png").Reference;
  295. //
  296. // 阴影校正
  297. //
  298. this.menuImageShadingCorrection.Click += new EventHandler(MenuImageShadingCorrection_Click);
  299. this.menuImageShadingCorrection.Text = PdnResources.GetString("Menu.Image.ShadingCorrection.Text");
  300. this.menuImageShadingCorrection.Image = PdnResources.GetImageResource("Icons.MenuActionShadingCorrectionIcon.png").Reference;
  301. //
  302. // 色度/饱和度/亮度
  303. //
  304. this.menuImageHSLAdjust.Click += new EventHandler(menuImageHSLAdjust_Click);
  305. this.menuImageHSLAdjust.Text = PdnResources.GetString("Menu.Image.HSLAdjust.Text");
  306. this.menuImageHSLAdjust.Image = PdnResources.GetImageResource("Icons.MenuActionHSLAdjustIcon.png").Reference;
  307. //
  308. // 亮度/对比度/伽马值
  309. //
  310. this.menuImageBCGAdjust.Click += new EventHandler(menuImageBCGAdjust_Click); /*menuImageBCGAdjust_Click*/
  311. this.menuImageBCGAdjust.Text = PdnResources.GetString("Menu.Image.BCGAdjust.Text");
  312. this.menuImageBCGAdjust.Image = PdnResources.GetImageResource("Icons.MenuActionBCGAdjustIcon.png").Reference;
  313. //
  314. // 图像旋转
  315. //
  316. this.menuImageRotate.NeedOpenDialog = true;
  317. this.menuImageRotate.Click += new EventHandler(menuImageRotate_Click);
  318. this.menuImageRotate.Text = PdnResources.GetString("Menu.Imagerotation.text");
  319. this.menuImageRotate.Image = PdnResources.GetImageResource("Icons.MenuImageXuanZhuan.png").Reference;
  320. //
  321. // 分辨率调整
  322. //
  323. this.menuImageChange.NeedOpenDialog = true;
  324. this.menuImageChange.Click += new EventHandler(menuImageChange_Click);
  325. this.menuImageChange.Text = "分辨率调整";
  326. this.menuImageChange.Image = PdnResources.GetImageResource("Icons.MenuImageXuanZhuan.png").Reference;
  327. //
  328. // 描绘
  329. //
  330. this.menuImagePortray.Click += new EventHandler(menuImagePortray_Click);
  331. this.menuImagePortray.Text = PdnResources.GetString("Menu.Image.Portray.Text");
  332. this.menuImagePortray.Image = PdnResources.GetImageResource("Icons.MenuActionPortrayIcon.png").Reference;
  333. //
  334. // 加强轮廓
  335. //
  336. this.menuImageEnhanceContour.Click += new EventHandler(menuImageEnhanceContour_Click);
  337. this.menuImageEnhanceContour.Text = PdnResources.GetString("Menu.Image.EnhanceContour.Text");
  338. this.menuImageEnhanceContour.Image = PdnResources.GetImageResource("Icons.MenuActionEnhanceContourIcon.png").Reference;
  339. //
  340. // 虚化蒙版
  341. //
  342. this.menuImageBlurMask.Click += new EventHandler(menuImageBlurMask_Click);
  343. this.menuImageBlurMask.Text = PdnResources.GetString("Menu.Image.BlurMask.Text");
  344. this.menuImageBlurMask.Image = PdnResources.GetImageResource("Icons.MenuActionBlurMaskIcon.png").Reference;
  345. //
  346. // 西格玛
  347. //
  348. this.menuImageSigma.Click += new EventHandler(menuImageSigma_Click);
  349. this.menuImageSigma.Text = PdnResources.GetString("Menu.Image.Sigma.Text");
  350. this.menuImageSigma.Image = PdnResources.GetImageResource("Icons.MenuActionSigmaIcon.png").Reference;
  351. //
  352. // 各向异性高斯滤波
  353. //
  354. this.menuImageGaussianFiltering.Click += new EventHandler(menuImageGaussianFiltering_Click);
  355. this.menuImageGaussianFiltering.Text = PdnResources.GetString("Menu.Image.GaussianFiltering.Text");
  356. this.menuImageGaussianFiltering.Image = PdnResources.GetImageResource("Icons.MenuActionGaussianFilteringIcon.png").Reference;
  357. //
  358. // 低通滤波
  359. //
  360. this.menuImageLowPassFiltering.Click += new EventHandler(menuImageLowPassFiltering_Click);
  361. this.menuImageLowPassFiltering.Text = PdnResources.GetString("Menu.Image.LowPassFiltering.Text");
  362. this.menuImageLowPassFiltering.Image = PdnResources.GetImageResource("Icons.MenuActionLowPassFilteringIcon.png").Reference;
  363. //
  364. // 中值滤波
  365. //
  366. this.menuImageMedianFiltering.Click += new EventHandler(menuImageMedianFiltering_Click);
  367. this.menuImageMedianFiltering.Text = PdnResources.GetString("Menu.Image.MedianFiltering.Text");
  368. this.menuImageMedianFiltering.Image = PdnResources.GetImageResource("Icons.MenuActionMedianFilteringIcon.png").Reference;
  369. //
  370. // 高斯模糊
  371. //
  372. this.menuImageGaussianBlur.Click += new EventHandler(menuImageGaussianBlur_Click);
  373. this.menuImageGaussianBlur.Text = PdnResources.GetString("Menu.Image.GaussianBlur.Text");
  374. this.menuImageGaussianBlur.Image = PdnResources.GetImageResource("Icons.MenuActionGaussianBlurIcon.png").Reference;
  375. //
  376. // 双边滤波
  377. //
  378. this.menuImageBilateralFiltering.Click += new EventHandler(menuImageBilateralFiltering_Click);
  379. this.menuImageBilateralFiltering.Text = PdnResources.GetString("Menu.Image.BilateralFiltering.Text");
  380. this.menuImageBilateralFiltering.Image = PdnResources.GetImageResource("Icons.MenuActionBilateralFilteringIcon.png").Reference;
  381. //
  382. // 小波降噪
  383. //
  384. this.menuImageWaveletDenoising.Click += new EventHandler(menuImageWaveletDenoising_Click);
  385. this.menuImageWaveletDenoising.Text = PdnResources.GetString("Menu.Image.WaveletDenoising.Text");
  386. this.menuImageWaveletDenoising.Image = PdnResources.GetImageResource("Icons.MenuActionWaveletDenoisingIcon.png").Reference;
  387. //
  388. // Log
  389. //
  390. this.menuImageLog.Click += new EventHandler(menuImageLog_Click);
  391. this.menuImageLog.Text = PdnResources.GetString("Menu.Image.Log.Text");
  392. this.menuImageLog.Image = PdnResources.GetImageResource("Icons.MenuActionLogIcon.png").Reference;
  393. //
  394. // Canny
  395. //
  396. this.menuImageCanny.Click += new EventHandler(menuImageCanny_Click);
  397. this.menuImageCanny.Text = PdnResources.GetString("Menu.Image.Canny.Text");
  398. this.menuImageCanny.Image = PdnResources.GetImageResource("Icons.MenuActionCannyIcon.png").Reference;
  399. //
  400. // Sobel
  401. //
  402. this.menuImageSobel.Click += new EventHandler(menuImageSobel_Click);
  403. this.menuImageSobel.Text = PdnResources.GetString("Menu.Image.Sobel.Text");
  404. this.menuImageSobel.Image = PdnResources.GetImageResource("Icons.MenuActionSobelIcon.png").Reference;
  405. //
  406. // Kirsch
  407. //
  408. this.menuImageKirsch.Click += new EventHandler(menuImageKirsch_Click);
  409. this.menuImageKirsch.Text = PdnResources.GetString("Menu.Image.Kirsch.Text");
  410. this.menuImageKirsch.Image = PdnResources.GetImageResource("Icons.MenuActionKirschIcon.png").Reference;
  411. //
  412. // Prewitt
  413. //
  414. this.menuImagePrewitt.Click += new EventHandler(menuImagePrewitt_Click);
  415. this.menuImagePrewitt.Text = PdnResources.GetString("Menu.Image.Prewitt.Text");
  416. this.menuImagePrewitt.Image = PdnResources.GetImageResource("Icons.MenuActionPrewittIcon.png").Reference;
  417. //
  418. // Roberts
  419. //
  420. this.menuImageRoberts.Click += new EventHandler(menuImageRoberts_Click);
  421. this.menuImageRoberts.Text = PdnResources.GetString("Menu.Image.Roberts.Text");
  422. this.menuImageRoberts.Image = PdnResources.GetImageResource("Icons.MenuActionRobertsIcon.png").Reference;
  423. //
  424. // Laplace
  425. //
  426. this.menuImageLaplace.Click += new EventHandler(menuImageLaplace_Click);
  427. this.menuImageLaplace.Text = PdnResources.GetString("Menu.Image.Laplace.Text");
  428. this.menuImageLaplace.Image = PdnResources.GetImageResource("Icons.MenuActionLaplaceIcon.png").Reference;
  429. //
  430. // 加
  431. //
  432. this.menuImageAddition.Click += new EventHandler(menuImageAddition_Click);
  433. this.menuImageAddition.Text = PdnResources.GetString("Menu.Image.Addition.Text");
  434. this.menuImageAddition.Image = PdnResources.GetImageResource("Icons.MenuActionAdditionIcon.png").Reference;
  435. //
  436. // 减
  437. //
  438. this.menuImageSubtraction.Click += new EventHandler(menuImageSubtraction_Click);
  439. this.menuImageSubtraction.Text = PdnResources.GetString("Menu.Image.Subtraction.Text");
  440. this.menuImageSubtraction.Image = PdnResources.GetImageResource("Icons.MenuActionSubtractionIcon.png").Reference;
  441. //
  442. // 乘
  443. //
  444. this.menuImageMultiplication.Click += new EventHandler(menuImageMultiplication_Click);
  445. this.menuImageMultiplication.Text = PdnResources.GetString("Menu.Image.Multiplication.Text");
  446. this.menuImageMultiplication.Image = PdnResources.GetImageResource("Icons.MenuActionMultiplicationIcon.png").Reference;
  447. //
  448. // 除
  449. //
  450. this.menuImageDivision.Click += new EventHandler(menuImageDivision_Click);
  451. this.menuImageDivision.Text = PdnResources.GetString("Menu.Image.Division.Text");
  452. this.menuImageDivision.Image = PdnResources.GetImageResource("Icons.MenuActionDivisionIcon.png").Reference;
  453. //
  454. // 平均
  455. //
  456. this.menuImageAverage.Click += new EventHandler(menuImageAverage_Click);
  457. this.menuImageAverage.Text = PdnResources.GetString("Menu.Image.Average.Text");
  458. this.menuImageAverage.Image = PdnResources.GetImageResource("Icons.MenuActionAverageIcon.png").Reference;
  459. //
  460. // 平方
  461. //
  462. this.menuImageSquare.Click += new EventHandler(menuImageSquare_Click);
  463. this.menuImageSquare.Text = PdnResources.GetString("Menu.Image.Square.Text");
  464. this.menuImageSquare.Image = PdnResources.GetImageResource("Icons.MenuActionSquareIcon.png").Reference;
  465. //
  466. // 平方根
  467. //
  468. this.menuImageSquareRoot.Click += new EventHandler(menuImageSquareBoot_Click);
  469. this.menuImageSquareRoot.Text = PdnResources.GetString("Menu.Image.SquareRoot.Text");
  470. this.menuImageSquareRoot.Image = PdnResources.GetImageResource("Icons.MenuActionSquareRootIcon.png").Reference;
  471. //
  472. // 对数
  473. //
  474. this.menuImageLogarithm.Click += new EventHandler(menuImageLogarithm_Click);
  475. this.menuImageLogarithm.Text = PdnResources.GetString("Menu.Image.Logarithm.Text");
  476. this.menuImageLogarithm.Image = PdnResources.GetImageResource("Icons.MenuActionLogarithmIcon.png").Reference;
  477. //
  478. // 指数
  479. //
  480. this.menuImageIndex.Click += new EventHandler(menuImageIndex_Click);
  481. this.menuImageIndex.Text = PdnResources.GetString("Menu.Image.Index.Text");
  482. this.menuImageIndex.Image = PdnResources.GetImageResource("Icons.MenuActionIndexIcon.png").Reference;
  483. //
  484. // 最大
  485. //
  486. this.menuImageMax.Click += new EventHandler(menuImageMax_Click);
  487. this.menuImageMax.Text = PdnResources.GetString("Menu.Image.Max.Text");
  488. this.menuImageMax.Image = PdnResources.GetImageResource("Icons.MenuActionMaxIcon.png").Reference;
  489. //
  490. // 最小
  491. //
  492. this.menuImageMin.Click += new EventHandler(menuImageMin_Click);
  493. this.menuImageMin.Text = PdnResources.GetString("Menu.Image.Min.Text");
  494. this.menuImageMin.Image = PdnResources.GetImageResource("Icons.MenuActionMinIcon.png").Reference;
  495. //
  496. // 加载菜单的文字和icon
  497. //
  498. this.LoadNames(this.Name);
  499. this.LoadIcons();
  500. }
  501. /// <summary>
  502. /// 反色
  503. /// </summary>
  504. /// <param name="sender"></param>
  505. /// <param name="e"></param>
  506. private void menuImageReverseColor_Click(object sender, EventArgs e)
  507. {
  508. if (AppWorkspace.ActiveDocumentWorkspace != null)
  509. {
  510. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionRevertColor, PdnResources.GetString("Menu.ImageProcessing.adjust.Imageprocevert.text")/*;//待修改中文资源-scc备注 20191216*/,(PdnMenuItem)sender).ShowDialog();
  511. }
  512. else
  513. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  514. }
  515. /// <summary>
  516. /// 灰度化
  517. /// </summary>
  518. /// <param name="sender"></param>
  519. /// <param name="e"></param>
  520. private void menuImageGrayscale_Click(object sender, EventArgs e)
  521. {
  522. if (AppWorkspace.ActiveDocumentWorkspace != null)
  523. {
  524. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionBgr2Gray, PdnResources.GetString("Menu.ImageProcessing.adjust.Imagepaying.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  525. }
  526. else
  527. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  528. }
  529. /// <summary>
  530. /// 白平衡
  531. /// </summary>
  532. /// <param name="sender"></param>
  533. /// <param name="e"></param>
  534. private void menuImageWhiteBalance_Click(object sender, EventArgs e)
  535. {
  536. if (AppWorkspace.ActiveDocumentWorkspace != null)
  537. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionWhiteBalance, PdnResources.GetString("Menu.ImageProcessing.adjust.Imagepitebalance.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  538. else
  539. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  540. }
  541. /// <summary>
  542. /// 色彩平衡
  543. /// </summary>
  544. /// <param name="sender"></param>
  545. /// <param name="e"></param>
  546. private void menuImageColorBalance_Click(object sender, EventArgs e)
  547. {
  548. if (AppWorkspace.ActiveDocumentWorkspace != null)
  549. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionColorBalance, PdnResources.GetString("Menu.Imageprocesorbalance.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  550. else
  551. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  552. }
  553. /// <summary>
  554. /// 阴影校正
  555. /// </summary>
  556. /// <param name="sender"></param>
  557. /// <param name="e"></param>
  558. private void MenuImageShadingCorrection_Click(object sender, EventArgs e)
  559. {
  560. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  561. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionShadingCorrection, PdnResources.GetString("Menu.Imageprocessingadjustmentshadowcorrection.Text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  562. }
  563. else
  564. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  565. }
  566. /// <summary>
  567. /// 色度/饱和度/亮度
  568. /// </summary>
  569. /// <param name="sender"></param>
  570. /// <param name="e"></param>
  571. private void menuImageHSLAdjust_Click(object sender, EventArgs e)
  572. {
  573. if (AppWorkspace.ActiveDocumentWorkspace != null)
  574. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionHSB, PdnResources.GetString("Menu.processingadjustmentchrom.Text")/*;//待修改中文资源-scc备注 20191212*/, (PdnMenuItem)sender).ShowDialog();
  575. else
  576. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  577. }
  578. /// <summary>
  579. /// 亮度/对比度/伽马值
  580. /// </summary>
  581. /// <param name="sender"></param>
  582. /// <param name="e"></param>
  583. private void menuImageBCGAdjust_Click(object sender, EventArgs e)
  584. {
  585. if (AppWorkspace.ActiveDocumentWorkspace != null)
  586. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionBCG, PdnResources.GetString("Menu.eprocessinadjustmentbrigh.Text")/*;//待修改中文资源-scc备注 20191212*/, (PdnMenuItem)sender).ShowDialog();
  587. else
  588. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  589. }
  590. /// <summary>
  591. /// 图像旋转
  592. /// </summary>
  593. /// <param name="sender"></param>
  594. /// <param name="e"></param>
  595. private void menuImageRotate_Click(object sender, EventArgs e)
  596. {
  597. if (AppWorkspace.ActiveDocumentWorkspace != null)
  598. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionImageRotate, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.Adjust.Text") + "-" + PdnResources.GetString("Menu.Imagerotation.text")/*;//待修改中文资源-scc备注 20191212*/, (PdnMenuItem)sender).ShowDialog();
  599. else
  600. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  601. }
  602. /// <summary>
  603. /// 图像分辨率调整
  604. /// </summary>
  605. /// <param name="sender"></param>
  606. /// <param name="e"></param>
  607. private void menuImageChange_Click(object sender, EventArgs e)
  608. {
  609. if (AppWorkspace.ActiveDocumentWorkspace != null)
  610. new BshTransferAdjustDialog(AppWorkspace, ActionType.ImageChangeResolution, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.Adjust.Text") + "-" + "分辨率调整", (PdnMenuItem)sender).ShowDialog();
  611. else
  612. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  613. }
  614. /// <summary>
  615. /// 描绘
  616. /// </summary>
  617. /// <param name="sender"></param>
  618. /// <param name="e"></param>
  619. private void menuImagePortray_Click(object sender, EventArgs e)
  620. {
  621. if (AppWorkspace.ActiveDocumentWorkspace != null)
  622. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionPortray, PdnResources.GetString("Menu.ImageProcessing.Sharpen.Imagscribe.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  623. else
  624. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  625. }
  626. /// <summary>
  627. /// 加强轮廓
  628. /// </summary>
  629. /// <param name="sender"></param>
  630. /// <param name="e"></param>
  631. private void menuImageEnhanceContour_Click(object sender, EventArgs e)
  632. {
  633. if (AppWorkspace.ActiveDocumentWorkspace != null)
  634. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionEnhanceContour, PdnResources.GetString("Menu.Imageprochencontours.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  635. else
  636. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  637. }
  638. /// <summary>
  639. /// 虚化蒙版
  640. /// </summary>
  641. /// <param name="sender"></param>
  642. /// <param name="e"></param>
  643. private void menuImageBlurMask_Click(object sender, EventArgs e)
  644. {
  645. if (AppWorkspace.ActiveDocumentWorkspace != null)
  646. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionBlurMask, PdnResources.GetString("Menu.Image.Text")+"-"+PdnResources.GetString("Menu.Image.Sharpen.Text")+"-"+PdnResources.GetString("Menu.Image.BlurMask.Text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  647. else
  648. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  649. }
  650. /// <summary>
  651. /// 西格玛
  652. /// </summary>
  653. /// <param name="sender"></param>
  654. /// <param name="e"></param>
  655. private void menuImageSigma_Click(object sender, EventArgs e)
  656. {
  657. if (AppWorkspace.ActiveDocumentWorkspace != null)
  658. new BshTransferAdjustDialog(AppWorkspace, ActionType.Sigma,PdnResources.GetString("Menu.ImageProcessing.smooth.ImageProcgma.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  659. else
  660. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  661. }
  662. /// <summary>
  663. /// 各向异性高斯滤波
  664. /// </summary>
  665. /// <param name="sender"></param>
  666. /// <param name="e"></param>F
  667. private void menuImageGaussianFiltering_Click(object sender, EventArgs e)
  668. {
  669. if (AppWorkspace.ActiveDocumentWorkspace != null)
  670. new BshTransferAdjustDialog(AppWorkspace, ActionType.GaussianFiltering,PdnResources.GetString("Menu.ImageProcessing.smooth.Imagnfiltering.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  671. else
  672. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  673. }
  674. /// <summary>
  675. /// 低通滤波
  676. /// </summary>
  677. /// <param name="sender"></param>
  678. /// <param name="e"></param>
  679. private void menuImageLowPassFiltering_Click(object sender, EventArgs e)
  680. {
  681. if (AppWorkspace.ActiveDocumentWorkspace != null)
  682. new BshTransferAdjustDialog(AppWorkspace, ActionType.LowPassFiltering,PdnResources.GetString("Menu.Image.Text")+"-"+PdnResources.GetString("Menu.Image.Smooth.Text")+"-"+PdnResources.GetString("Menu.Image.LowPassFiltering.Text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  683. else
  684. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  685. }
  686. /// <summary>
  687. /// 中值滤波
  688. /// </summary>
  689. /// <param name="sender"></param>
  690. /// <param name="e"></param>
  691. private void menuImageMedianFiltering_Click(object sender, EventArgs e)
  692. {
  693. if (AppWorkspace.ActiveDocumentWorkspace != null)
  694. new BshTransferAdjustDialog(AppWorkspace, ActionType.MedianFiltering, PdnResources.GetString("Menu.ImageProcessing.smooth.Imageprocdianfilter.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  695. else
  696. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  697. }
  698. /// <summary>
  699. /// 高斯模糊
  700. /// </summary>
  701. /// <param name="sender"></param>
  702. /// <param name="e"></param>
  703. private void menuImageGaussianBlur_Click(object sender, EventArgs e)
  704. {
  705. if (AppWorkspace.ActiveDocumentWorkspace != null)
  706. new BshTransferAdjustDialog(AppWorkspace, ActionType.GaussianBlur, PdnResources.GetString("Menu.ImageProcessing.smooth.ImageProcessianBlur.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  707. else
  708. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  709. }
  710. /// <summary>
  711. /// 双边滤波
  712. /// </summary>
  713. /// <param name="sender"></param>
  714. /// <param name="e"></param>
  715. private void menuImageBilateralFiltering_Click(object sender, EventArgs e)
  716. {
  717. if (AppWorkspace.ActiveDocumentWorkspace != null)
  718. new BshTransferAdjustDialog(AppWorkspace, ActionType.BilateralFiltering, PdnResources.GetString("Menu.ImageProcessing.smooth.Imageproltering.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  719. else
  720. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  721. }
  722. /// <summary>
  723. /// 小波降噪
  724. /// </summary>
  725. /// <param name="sender"></param>
  726. /// <param name="e"></param>
  727. private void menuImageWaveletDenoising_Click(object sender, EventArgs e)
  728. {
  729. if (AppWorkspace.ActiveDocumentWorkspace != null)
  730. new BshTransferAdjustDialog(AppWorkspace, ActionType.WaveletDenoising, PdnResources.GetString("Menu.ImageProcessing.smooth.Imageprocessineanfiltering.text")/* 小波降噪;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  731. else
  732. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  733. }
  734. /// <summary>
  735. /// Log
  736. /// </summary>
  737. /// <param name="sender"></param>
  738. /// <param name="e"></param>
  739. private void menuImageLog_Click(object sender, EventArgs e)
  740. {
  741. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  742. new BshTransferAdjustDialog(AppWorkspace, ActionType.Log, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Log"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  743. }
  744. else
  745. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  746. }
  747. /// <summary>
  748. /// Canny
  749. /// </summary>
  750. /// <param name="sender"></param>
  751. /// <param name="e"></param>
  752. private void menuImageCanny_Click(object sender, EventArgs e)
  753. {
  754. if (AppWorkspace.ActiveDocumentWorkspace != null)
  755. {
  756. new BshTransferAdjustDialog(AppWorkspace, ActionType.Canny, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Canny"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  757. }
  758. else
  759. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  760. }
  761. /// <summary>
  762. /// Sobel
  763. /// </summary>
  764. /// <param name="sender"></param>
  765. /// <param name="e"></param>
  766. private void menuImageSobel_Click(object sender, EventArgs e)
  767. {
  768. if (AppWorkspace.ActiveDocumentWorkspace != null)
  769. {
  770. new BshTransferAdjustDialog(AppWorkspace, ActionType.Sobel, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Sobel"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  771. }
  772. else
  773. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  774. }
  775. /// <summary>
  776. /// Kirsch
  777. /// </summary>
  778. /// <param name="sender"></param>
  779. /// <param name="e"></param>
  780. private void menuImageKirsch_Click(object sender, EventArgs e)
  781. {
  782. if (AppWorkspace.ActiveDocumentWorkspace != null)
  783. {
  784. new BshTransferAdjustDialog(AppWorkspace, ActionType.Kirsch, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Kirsch"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  785. }
  786. else
  787. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  788. }
  789. /// <summary>
  790. /// Prewitt
  791. /// </summary>
  792. /// <param name="sender"></param>
  793. /// <param name="e"></param>
  794. private void menuImagePrewitt_Click(object sender, EventArgs e)
  795. {
  796. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  797. new BshTransferAdjustDialog(AppWorkspace, ActionType.Prewitt, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Prewitt"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  798. }
  799. else
  800. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  801. }
  802. /// <summary>
  803. /// Roberts
  804. /// </summary>
  805. /// <param name="sender"></param>
  806. /// <param name="e"></param>
  807. private void menuImageRoberts_Click(object sender, EventArgs e)
  808. {
  809. if (AppWorkspace.ActiveDocumentWorkspace != null)
  810. {
  811. new BshTransferAdjustDialog(AppWorkspace, ActionType.Roberts, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Roberts"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  812. }
  813. else
  814. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  815. }
  816. /// <summary>
  817. /// Laplace
  818. /// </summary>
  819. /// <param name="sender"></param>
  820. /// <param name="e"></param>
  821. private void menuImageLaplace_Click(object sender, EventArgs e)
  822. {
  823. if (AppWorkspace.ActiveDocumentWorkspace != null)
  824. {
  825. new BshTransferAdjustDialog(AppWorkspace, ActionType.Laplace, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Laplace"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();
  826. }
  827. else
  828. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  829. }
  830. /// <summary>
  831. /// 加
  832. /// </summary>
  833. /// <param name="sender"></param>
  834. /// <param name="e"></param>
  835. private void menuImageAddition_Click(object sender, EventArgs e)
  836. {
  837. if (AppWorkspace.ActiveDocumentWorkspace != null)
  838. {
  839. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageAddition, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprodd.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  840. }
  841. else
  842. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  843. }
  844. /// <summary>
  845. /// 减
  846. /// </summary>
  847. /// <param name="sender"></param>
  848. /// <param name="e"></param>
  849. private void menuImageSubtraction_Click(object sender, EventArgs e)
  850. {
  851. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  852. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageSubtraction, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprub.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  853. }
  854. else
  855. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  856. }
  857. /// <summary>
  858. /// 乘
  859. /// </summary>
  860. /// <param name="sender"></param>
  861. /// <param name="e"></param>
  862. private void menuImageMultiplication_Click(object sender, EventArgs e)
  863. {
  864. if (AppWorkspace.ActiveDocumentWorkspace != null)
  865. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageMultiplication, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprocply.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  866. else
  867. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  868. }
  869. /// <summary>
  870. /// 除
  871. /// </summary>
  872. /// <param name="sender"></param>
  873. /// <param name="e"></param>
  874. private void menuImageDivision_Click(object sender, EventArgs e)
  875. {
  876. if (AppWorkspace.ActiveDocumentWorkspace != null)
  877. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageDivision, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageproision.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  878. else
  879. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  880. }
  881. /// <summary>
  882. /// 平均
  883. /// </summary>
  884. /// <param name="sender"></param>
  885. /// <param name="e"></param>
  886. private void menuImageAverage_Click(object sender, EventArgs e)
  887. {
  888. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  889. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageAverage, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageperage.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  890. }
  891. else
  892. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  893. }
  894. /// <summary>
  895. /// 平方
  896. /// </summary>
  897. /// <param name="sender"></param>
  898. /// <param name="e"></param>
  899. private void menuImageSquare_Click(object sender, EventArgs e)
  900. {
  901. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  902. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageSquare, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imagepare.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  903. }
  904. else
  905. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  906. }
  907. /// <summary>
  908. /// 平方根
  909. /// </summary>
  910. /// <param name="sender"></param>
  911. /// <param name="e"></param>
  912. private void menuImageSquareBoot_Click(object sender, EventArgs e)
  913. {
  914. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  915. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageSquareBoot, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageareroots.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  916. }
  917. else
  918. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  919. }
  920. /// <summary>
  921. /// 对数
  922. /// </summary>
  923. /// <param name="sender"></param>
  924. /// <param name="e"></param>
  925. private void menuImageLogarithm_Click(object sender, EventArgs e)
  926. {
  927. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  928. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageLogarithm, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprlog.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  929. }
  930. else
  931. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  932. }
  933. /// <summary>
  934. /// 指数
  935. /// </summary>
  936. /// <param name="sender"></param>
  937. /// <param name="e"></param>
  938. private void menuImageIndex_Click(object sender, EventArgs e)
  939. {
  940. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  941. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageIndex, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprodex.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  942. }
  943. else
  944. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  945. }
  946. /// <summary>
  947. /// 最大
  948. /// </summary>
  949. /// <param name="sender"></param>
  950. /// <param name="e"></param>
  951. private void menuImageMax_Click(object sender, EventArgs e)
  952. {
  953. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  954. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageMax, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.InterImageOperation.Text") + "-" + PdnResources.GetString("Menu.max.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  955. }
  956. else
  957. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  958. }
  959. /// <summary>
  960. /// 最小
  961. /// </summary>
  962. /// <param name="sender"></param>
  963. /// <param name="e"></param>
  964. private void menuImageMin_Click(object sender, EventArgs e)
  965. {
  966. if (AppWorkspace.ActiveDocumentWorkspace != null) {
  967. new InterImageOpDialog(AppWorkspace, ActionType.ActionImageMin, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.InterImageOperation.Text") + "-" + PdnResources.GetString("Menu.minimum.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();
  968. }
  969. else
  970. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  971. }
  972. /// <summary>
  973. /// 图像偏移
  974. /// </summary>
  975. /// <param name="sender"></param>
  976. /// <param name="e"></param>
  977. private void menuImageShift_Click(object sender, EventArgs e)
  978. {
  979. if (AppWorkspace.ActiveDocumentWorkspace != null)
  980. new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionImageOffset, PdnResources.GetString("Menu.Image.Text")+"-"+ PdnResources.GetString("Menu.Image.ImageShift.Text"), (PdnMenuItem)sender).ShowDialog();
  981. else
  982. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  983. }
  984. /// <summary>
  985. /// 图像拼接
  986. /// </summary>
  987. /// <param name="sender"></param>
  988. /// <param name="e"></param>
  989. private void menuImageStitching_Click(object sender, EventArgs e)
  990. {
  991. List<List<double>> localxys = new List<List<double>>();
  992. double[] xs = new double[] { 0, 4, 8 };
  993. double[] ys = new double[] { 0, 5, 0 };
  994. double[] zs = new double[] { 8112.3, 7802.525, 8577.95 };
  995. double[] cals = this.PanelFit(xs, ys, zs);
  996. double cala = cals[0];
  997. for (int ix = 0; ix < 9; ix++)
  998. {
  999. List<double> localys = new List<double>();
  1000. for (int iy = 0; iy < 6; iy++)
  1001. {
  1002. double z = (-cals[0] * ix - cals[1] * iy - cals[3]) / cals[2];
  1003. localys.Add(z - 7);
  1004. }
  1005. localxys.Add(localys);
  1006. }
  1007. double zva = localxys[0][0];
  1008. //new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionImageStitching, PdnResources.GetString("Menu.Image.Text")+"-"+ PdnResources.GetString("Menu.ImageCollection.ImageStitching.Text")).ShowDialog();
  1009. using (ImageMosaicsDialog imageMosaicsDialog = new ImageMosaicsDialog(this.AppWorkspace))
  1010. {
  1011. imageMosaicsDialog.StartPosition = FormStartPosition.CenterScreen;
  1012. imageMosaicsDialog.ShowDialog();
  1013. }
  1014. if (AppWorkspace.startScriptRecording)
  1015. {
  1016. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  1017. }
  1018. }
  1019. /// <summary>
  1020. /// 平面方程拟合,ax+by+cz+d=0,其中a=result[0],b=result[1],c=result[2],d=result[3]
  1021. /// </summary>
  1022. /// <param name="x"></param>
  1023. /// <param name="y"></param>
  1024. /// <param name="z"></param>
  1025. /// <returns></returns>
  1026. private double[] PanelFit(double[] x, double[] y, double[] z)
  1027. {
  1028. double[] result = new double[4];
  1029. int n = x.Length;
  1030. double[,] A = new double[n, 3];
  1031. double[,] E = new double[n, 1];
  1032. for (int i = 0; i < n; i++)
  1033. {
  1034. A[i, 0] = x[i] - z[i];
  1035. A[i, 1] = y[i] - z[i];
  1036. A[i, 2] = 1;
  1037. E[i, 0] = -z[i];
  1038. }
  1039. double[,] AT = MatrixInver(A);
  1040. double[,] ATxA = MatrixMultiply(AT, A);
  1041. double[,] OPPAxTA = MatrixOpp(ATxA);
  1042. double[,] OPPATAxAT = MatrixMultiply(OPPAxTA, AT);
  1043. double[,] DP = MatrixMultiply(OPPATAxAT, E);
  1044. result[0] = DP[0, 0];
  1045. result[1] = DP[1, 0];
  1046. result[2] = 1 - result[0] - result[1];
  1047. result[3] = DP[2, 0];
  1048. return result;
  1049. }
  1050. /// <summary>
  1051. /// 矩阵转置
  1052. /// </summary>
  1053. /// <param name="matrix"></param>
  1054. /// <returns></returns>
  1055. private double[,] MatrixInver(double[,] matrix)
  1056. {
  1057. double[,] result = new double[matrix.GetLength(1), matrix.GetLength(0)];
  1058. for (int i = 0; i < matrix.GetLength(1); i++)
  1059. for (int j = 0; j < matrix.GetLength(0); j++)
  1060. result[i, j] = matrix[j, i];
  1061. return result;
  1062. }
  1063. /// <summary>
  1064. /// 矩阵相乘
  1065. /// </summary>
  1066. /// <param name="matrixA"></param>
  1067. /// <param name="matrixB"></param>
  1068. /// <returns></returns>
  1069. private double[,] MatrixMultiply(double[,] matrixA, double[,] matrixB)
  1070. {
  1071. double[,] result = new double[matrixA.GetLength(0), matrixB.GetLength(1)];
  1072. for (int i = 0; i < matrixA.GetLength(0); i++)
  1073. {
  1074. for (int j = 0; j < matrixB.GetLength(1); j++)
  1075. {
  1076. result[i, j] = 0;
  1077. for (int k = 0; k < matrixB.GetLength(0); k++)
  1078. {
  1079. result[i, j] += matrixA[i, k] * matrixB[k, j];
  1080. }
  1081. }
  1082. }
  1083. return result;
  1084. }
  1085. /// <summary>
  1086. /// 矩阵的逆
  1087. /// </summary>
  1088. /// <param name="matrix"></param>
  1089. /// <returns></returns>
  1090. private double[,] MatrixOpp(double[,] matrix)
  1091. {
  1092. double X = 1 / MatrixSurplus(matrix);
  1093. double[,] matrixB = new double[matrix.GetLength(0), matrix.GetLength(1)];
  1094. double[,] matrixSP = new double[matrix.GetLength(0), matrix.GetLength(1)];
  1095. double[,] matrixAB = new double[matrix.GetLength(0), matrix.GetLength(1)];
  1096. for (int i = 0; i < matrix.GetLength(0); i++)
  1097. for (int j = 0; j < matrix.GetLength(1); j++)
  1098. {
  1099. for (int m = 0; m < matrix.GetLength(0); m++)
  1100. for (int n = 0; n < matrix.GetLength(1); n++)
  1101. matrixB[m, n] = matrix[m, n];
  1102. {
  1103. for (int x = 0; x < matrix.GetLength(1); x++)
  1104. matrixB[i, x] = 0;
  1105. for (int y = 0; y < matrix.GetLength(0); y++)
  1106. matrixB[y, j] = 0;
  1107. matrixB[i, j] = 1;
  1108. matrixSP[i, j] = MatrixSurplus(matrixB);
  1109. matrixAB[i, j] = X * matrixSP[i, j];
  1110. }
  1111. }
  1112. return MatrixInver(matrixAB);
  1113. }
  1114. /// <summary>
  1115. /// 矩阵的行列式的值
  1116. /// </summary>
  1117. /// <param name="A"></param>
  1118. /// <returns></returns>
  1119. public static double MatrixSurplus(double[,] matrix)
  1120. {
  1121. double X = -1;
  1122. double[,] a = matrix;
  1123. int i, j, k, p, r, m, n;
  1124. m = a.GetLength(0);
  1125. n = a.GetLength(1);
  1126. double temp = 1, temp1 = 1, s = 0, s1 = 0;
  1127. if (n == 2)
  1128. {
  1129. for (i = 0; i < m; i++)
  1130. for (j = 0; j < n; j++)
  1131. if ((i + j) % 2 > 0) temp1 *= a[i, j];
  1132. else temp *= a[i, j];
  1133. X = temp - temp1;
  1134. }
  1135. else
  1136. {
  1137. for (k = 0; k < n; k++)
  1138. {
  1139. for (i = 0, j = k; i < m && j < n; i++, j++)
  1140. temp *= a[i, j];
  1141. if (m - i > 0)
  1142. {
  1143. for (p = m - i, r = m - 1; p > 0; p--, r--)
  1144. temp *= a[r, p - 1];
  1145. }
  1146. s += temp;
  1147. temp = 1;
  1148. }
  1149. for (k = n - 1; k >= 0; k--)
  1150. {
  1151. for (i = 0, j = k; i < m && j >= 0; i++, j--)
  1152. temp1 *= a[i, j];
  1153. if (m - i > 0)
  1154. {
  1155. for (p = m - 1, r = i; r < m; p--, r++)
  1156. temp1 *= a[r, p];
  1157. }
  1158. s1 += temp1;
  1159. temp1 = 1;
  1160. }
  1161. X = s - s1;
  1162. }
  1163. return X;
  1164. }
  1165. /// <summary>
  1166. /// 景深拓展
  1167. /// </summary>
  1168. /// <param name="sender"></param>
  1169. /// <param name="e"></param>
  1170. private void MenuImageDepthExtension_Click(object sender, EventArgs e)
  1171. {
  1172. if (AppWorkspace.startScriptRecording)
  1173. {
  1174. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  1175. }
  1176. using (ImageDepthExtensionDialog imageDepthExtensionDialog = new ImageDepthExtensionDialog(this.AppWorkspace))
  1177. {
  1178. imageDepthExtensionDialog.StartPosition = FormStartPosition.CenterScreen;
  1179. imageDepthExtensionDialog.ShowDialog();
  1180. }
  1181. }
  1182. protected override void OnDropDownOpening(EventArgs e)
  1183. {
  1184. if (AppWorkspace.ActiveDocumentWorkspace == null || AppWorkspace.ScriptRunning)
  1185. {
  1186. this.menuImageAdjust.Enabled = false;
  1187. this.menuImageSharpen.Enabled = false;
  1188. this.menuImageSmooth.Enabled = false;
  1189. this.menuImageEdgeDetection.Enabled = false;
  1190. this.menuImageInterOperation.Enabled = false;
  1191. this.menuImageShift.Enabled = false;
  1192. }
  1193. else
  1194. {
  1195. this.menuImageAdjust.Enabled = true;
  1196. this.menuImageSharpen.Enabled = true;
  1197. this.menuImageSmooth.Enabled = true;
  1198. this.menuImageEdgeDetection.Enabled = true;
  1199. this.menuImageInterOperation.Enabled = true;
  1200. this.menuImageShift.Enabled = true;
  1201. }
  1202. this.menuImageStitching.Enabled = !AppWorkspace.ScriptRunning;
  1203. this.menuImageDepthExtension.Enabled = !AppWorkspace.ScriptRunning;
  1204. base.OnDropDownOpening(e);
  1205. }
  1206. }
  1207. }